下沙论坛

 找回密码
 注册论坛(EC通行证)

QQ登录

QQ登录

下沙大学生网QQ群8(千人群)
群号:6490324 ,验证:下沙大学生网。
用手机发布本地信息严禁群发,各种宣传贴请发表在下沙信息版块有问必答,欢迎提问 提升会员等级,助你宣传
新会员必读 大学生的论坛下沙新生必读下沙币获得方法及使用
查看: 6714|回复: 0
打印 上一主题 下一主题

HTTPS和HTTP相互间IFRAME的浏览器限制及安全提示

[复制链接]
  • TA的每日心情
    奋斗
    前天 09:20
  • 签到天数: 2383 天

    [LV.Master]伴坛终老

    跳转到指定楼层
    1
    发表于 2014-3-6 12:16:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
    作者: 阿伦 日期: 2013 年 3 月 21 日分类: HTTP, Javascript标签: HTTP, HTTPS, IFrame, 安全: w$ w2 j5 w. h% h
    目的学习如何搭建HTTPS服务;
    / R+ s; |1 c- N% X1 V% r为开发对安全性有较高要求的页面提供指导,避免不必要的安全漏洞;# Y& M3 ^2 Q) g  l
    步骤1.搭建本地HTTPS;+ w7 w( k8 c9 M* k* g
    2.分别开发所有可能的嵌套场景:
    / v8 U8 J' i0 o# m8 T2 x1 D. q% Z
    • HTTP嵌套HTTPS
    • HTTPS嵌套HTTP
    • HTTPS嵌套HTTPS
    • HTTP嵌套HTTP
      7 F% Q& B, a0 |; B1 L0 _$ x3 Z
    3.分别在现有主流浏览器的各个版本访问嵌套页面,记录浏览器相关提示及限制;+ k0 F  N) j6 r& Q: [
    操作记录环境系统环境:Windows 7 64bit: g' ?: v( O( a2 Y  I. s) _  E
    服务器:Apache
    , H/ \% ]+ M1 ]数据库:MySQL  o# [+ r; m4 U' {
    服务器语言:PHP! y8 R' M/ G7 I' y' x/ z( C
    搭建本地HTTPS下载windows环境的OpenSSL( http://www.openssl.org/related/binaries.html ,由于本人机器使用的是64位系统,所以下载的是64位OpenSSL)
    ( A+ _7 A* n4 H' i6 G6 J在Command中使用一下命令生成搭建HTTPS所需要的证书及相关文件:
    ! {7 Y4 i+ x& K1 ~& I! v9 t$ h(1) 复制apahce2/conf目录openssl.cnf 文件到bin目录
    . S2 v" v* ?( |' m# w(2) 生成RSA密钥 (private key) 下面两个命令都可以生成密钥:( \: v- y2 O7 s$ g1 w
    • openssl genrsa -des3 -out ca.key
    • openssl genrsa -out ca.key
    • openssl genrsa -out ca.key 1024* {% ]! {9 l- z) B4 @
    (-des3选项可以加密生成的密钥, 但是Win32平台不支持加密密钥?启动Apache时会产生以下错误信息, “SSLPassPhraseDialog builtin is not supported on Win32″(当时不清楚我就加了-des3参数?且出现这个错误时apache启动不报错?查看日志才发现以上错误。)): a) |' P* c3 I1 j1 i% ^" T
    (3) 产生 CA require cert?按提示填入相应的内容:
    4 ?% _; i; ^8 m# k
    • openssl req -config openssl.cnf -new -key ca.key -out ca.csr
      ; H4 V& l; c  B, [3 ^& X
    (4) 产生 CA public cert:7 [8 ]) T; M; a! z0 K
    • openssl x509 -days 3650 -req -signkey ca.key -in ca.csr -out ca.crt% @& I& H% s5 F; q; M! R: r/ z
    (5) 产生 Server private key:
    6 l1 p( r* R, S- M3 @8 g
    • openSSL genrsa -out ssl/server.key 1024
      - S$ d0 h1 H* A( @0 M: I( k8 u
    (6) 产生 Server require cert?按提示填入和上边相同的内容:
    3 Q7 O5 K# ?4 O; c: F' l) }) [
    • openssl req -config openssl.cnf -new -key server.key -out server.csr
      0 {7 x/ W; j) p8 x# X) u' r
    (7) 产生 Server public key:
    : b, ]& l+ j# ]
    • openssl ca -config openssl.cnf -days 3650 -cert ca.crt -keyfile ca.key -in server.csr -out server.crt% e; Q4 U. b  x; A
    运行这个命令会出错?I am unable to access the ./demoCA/newcerts directory….
    * ?* e  Y- f: W4 }  A0 t错误原因是没有手动创建一个CA目录结构
    . x# B( @) T) x7 q
    • └─demoCA
    •     ├─newcerts
    •     ├─index.txt
    •     ├─serial  y: H$ m5 z2 B4 _9 s8 q
    在demoCA中建立 index.txt 空文件, serial文件 , serial文件 中可输入01?此时再运行以上的命令即可生成server.crt。 将生成的 ca.crt、server.crt 和 server.key 放入apache的 conf 目录中- _) C- i# }* i' P5 h0 r. R' b
    (8) 编辑apache的配置文件httpd.conf 去掉以下语句的注释, Include conf/extra/httpd-ssl.conf
    , K$ t! y* X1 D$ h
    • # Secure (SSL/TLS) connections
    • Include conf/extra/httpd-ssl.conf
      ; N+ S: C4 b* n/ ~: ?- ]# N$ }
    (9) 编辑 conf/extra/httpd-ssl.conf% E9 V( N: m" o5 y; [. h
    把SSLMutex标签的值改为default
    7 v/ N9 T$ v- t0 j, V7 \检查以下项目对应的文件的目录是否正确
    1 ]5 q3 d$ B& X6 D2 `
    • SSLCertificateFile "D:/web/Apache2.2/conf/server.crt"
    • SSLCertificateKeyFile "D:/web/Apache2.2/conf/server.key"
    • SSLCertificateChainFile "D:/web/Apache2.2/conf/ca.crt". |5 n3 Y5 A0 }+ [2 q: Q% \$ f
    (上述内容需要按照服务安装的实际路径填写,除此之外,配置文件内的所有文件路径都需要确认是否与实际路径相符)
    - G, W+ |  N9 M' f成功搭建HTTPS:) i1 z9 v7 M) w. f$ ~  L6 |1 {
    0 J& a/ }0 T+ I1 s1 ?5 R
    " {  O5 Q5 A+ T. N

      F  Z+ R7 M- P7 O1 z开发各场景的测试页面HTTP内嵌IFRAME HTTPS
    •    
    •     HTTP iframe HTTPS
    •     这是父页面
    •    

    • 0 L% c' c; Z5 i! @2 Z' Y) o  l
    HTTPS内嵌IFRAME HTTP
    •    
    •     HTTPS iframe HTTP
    •    
    •     这是父页面
    •    

    • ( P4 q+ a% V% P0 U. ~4 x  A4 D
    内嵌页面
    •    
    •     Inner HTML
    •     这是子页面

    • ' n9 e  Y6 O2 N0 n
    IFRAME内嵌统计结果
    HTTP内嵌HTTPSHTTPS内嵌HTTPHTTPS内嵌HTTPSHTTP内嵌HTTP
    Chrome正常(有证书)正常(有证书)正常(有证书)正常
    Firefox正常(有证书)正常(有证书)正常(有证书)正常
    IE 9.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    IE 8.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    IE 7.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    Opera正常(有证书)正常(有证书)正常(有证书)正常
    IE 9.0安全风险警告信息:

    IE 9.0安全风险警告信息:


    ' e1 Q. j+ Q+ F3 ]4 i8 K+ a7 SIE 8.0安全风险警告信息:

    IE 8.0安全风险警告信息


    / S( \0 z. R3 i: ?+ h& kIE 7.0安全风险警告信息:

    IE 7.0安全风险警告信息

    , z. @! z- Y9 I2 S4 L
    JS访问测试父页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.display = function() {
    •         alert(“Parent window.display() called.”);
    •     }
    • // ]]>

    • 9 W/ ]8 i7 C! E9 G! L* E! |- O

      0 u+ F- A  r/ l" Y) N+ w
    子页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.onload = function() {
    •         window.parent && window.parent.display();
    •     }
    • // ]]>

    • 5 g1 Z; q! `$ \) I9 T& E

      1 I4 q% J+ u4 R
    JS访问测试统计结果
    HTTP(父) HTTPS(子)HTTPS(父)HTTP(子)HTTPS(父)HTTPS(子)HTTP(父)HTTP(子)
    Chrome控制台报错,限制调用控制台报错,限制调用正常调用正常调用
    Firefox控制台报错,限制调用控制台报错,限制调用正常调用正常调用
    IE 9.0控制台报错,限制调用控制台报错,限制调用正常调用正常调用
    IE 8.0浏览器报错,限制调用浏览器报错,限制调用正常调用正常调用
    IE 7.0浏览器报错,限制调用浏览器报错,限制调用正常调用正常调用
    Opera控制台报错,限制调用控制台报错,限制调用正常调用正常调用
    IE 9.0 控制台报错信息:

    IE 9.0 控制台报错信息

      [: j- O. E+ y
    IE 8.0 浏览器报错信息:

    IE 8.0 浏览器报错信息

    0 X  r+ I  z+ I" ~
    IE 7.0 浏览器报错信息:

    IE 7.0 浏览器报错信息

    * ^- Z* N4 ]7 G, ]; e( R' o3 s
    分析通过上面的测试,浏览器对于HTTPS和HTTP之间用iFrame嵌套并没过于限制,但存在编码问题。另一方面,基于安全考虑,浏览器有对HTTPS和HTTP之间的JavaScript调用有较严格的限制。* l0 k! l' k6 Q( G& `
    & X; [$ O. k& K3 k

    1 k+ H3 c8 T, @2 C1 }/ z# R8 j+ R
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩

    本版积分规则

    关闭

    下沙大学生网推荐上一条 /1 下一条

    快速回复 返回顶部 返回列表