下沙论坛

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

用新浪微博连接

一步搞定

QQ登录

QQ登录

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

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

[复制链接]
  • TA的每日心情
    奋斗
    昨天 10:28
  • 签到天数: 2370 天

    [LV.Master]伴坛终老

    跳转到指定楼层
    1
    发表于 2014-3-6 12:16:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
    作者: 阿伦 日期: 2013 年 3 月 21 日分类: HTTP, Javascript标签: HTTP, HTTPS, IFrame, 安全3 Y) m3 E0 e( @% b
    目的学习如何搭建HTTPS服务;' i5 R. s0 B: s1 s% X
    为开发对安全性有较高要求的页面提供指导,避免不必要的安全漏洞;
    : _) X4 C+ c" h: O, B9 B步骤1.搭建本地HTTPS;; G% ~" f9 W  ], w" d9 G0 F
    2.分别开发所有可能的嵌套场景:
    ; u. d  E7 q. ?# |0 A; D
    • HTTP嵌套HTTPS
    • HTTPS嵌套HTTP
    • HTTPS嵌套HTTPS
    • HTTP嵌套HTTP/ G- b! D3 C* S9 k8 B# L6 x
    3.分别在现有主流浏览器的各个版本访问嵌套页面,记录浏览器相关提示及限制;6 _  L  _6 y8 h  K( n0 Y. }$ I, t7 a, x+ O
    操作记录环境系统环境:Windows 7 64bit
    & k0 e8 J4 q7 B$ U  M% X' G6 d服务器:Apache+ F, d* ~3 O  ]$ P5 e$ b. \
    数据库:MySQL
    * X+ H6 |5 K+ z3 x+ x% l& ?# F* P服务器语言:PHP, ?: r' n0 Y- `8 k2 a6 n
    搭建本地HTTPS下载windows环境的OpenSSL( http://www.openssl.org/related/binaries.html ,由于本人机器使用的是64位系统,所以下载的是64位OpenSSL)
    ; J. n2 `1 S! C, @6 k# m在Command中使用一下命令生成搭建HTTPS所需要的证书及相关文件:: S3 p+ R8 ~5 p, @
    (1) 复制apahce2/conf目录openssl.cnf 文件到bin目录: O$ I' [8 @8 |. @1 K9 O
    (2) 生成RSA密钥 (private key) 下面两个命令都可以生成密钥:# s; @/ E3 I! Z1 n
    • openssl genrsa -des3 -out ca.key
    • openssl genrsa -out ca.key
    • openssl genrsa -out ca.key 10248 [/ \: Q0 K3 Y' ?
    (-des3选项可以加密生成的密钥, 但是Win32平台不支持加密密钥?启动Apache时会产生以下错误信息, “SSLPassPhraseDialog builtin is not supported on Win32″(当时不清楚我就加了-des3参数?且出现这个错误时apache启动不报错?查看日志才发现以上错误。))
    7 O7 `/ v2 n$ g; @* t(3) 产生 CA require cert?按提示填入相应的内容:: t! Q4 P# ?/ f4 s/ O! Q, [7 l% W
    • openssl req -config openssl.cnf -new -key ca.key -out ca.csr9 J+ o- E2 i$ F( X/ J
    (4) 产生 CA public cert:
    - @2 _& b) b9 \
    • openssl x509 -days 3650 -req -signkey ca.key -in ca.csr -out ca.crt: {* k* x0 h# x/ K) }6 {
    (5) 产生 Server private key:5 z2 k- U) Z7 ?3 q
    • openSSL genrsa -out ssl/server.key 1024
      ) m9 K; o% ]& _
    (6) 产生 Server require cert?按提示填入和上边相同的内容:
    ! E: A8 W. v* D8 j
    • openssl req -config openssl.cnf -new -key server.key -out server.csr/ m% P3 V* Y  h( [
    (7) 产生 Server public key:
    5 @/ H5 B3 `3 k( u6 z" L( x
    • openssl ca -config openssl.cnf -days 3650 -cert ca.crt -keyfile ca.key -in server.csr -out server.crt; O/ g' U7 X  V. G7 }6 s! t9 r
    运行这个命令会出错?I am unable to access the ./demoCA/newcerts directory….3 @1 H9 o- Q+ O2 F# y0 n- }" ^: f
    错误原因是没有手动创建一个CA目录结构
    ' l2 {: _  a: f9 F$ }6 F/ H1 _
    • └─demoCA
    •     ├─newcerts
    •     ├─index.txt
    •     ├─serial
      ' K, m# C2 w: M: c5 p7 K/ C) s
    在demoCA中建立 index.txt 空文件, serial文件 , serial文件 中可输入01?此时再运行以上的命令即可生成server.crt。 将生成的 ca.crt、server.crt 和 server.key 放入apache的 conf 目录中
      s& d7 {3 Z+ Y' }(8) 编辑apache的配置文件httpd.conf 去掉以下语句的注释, Include conf/extra/httpd-ssl.conf8 r, y. M8 q6 B" z7 d8 N% B! J
    • # Secure (SSL/TLS) connections
    • Include conf/extra/httpd-ssl.conf3 l/ I" h3 V! y- R# O
    (9) 编辑 conf/extra/httpd-ssl.conf9 H' U9 g% [0 D
    把SSLMutex标签的值改为default! w6 K5 @9 I3 n1 H$ [
    检查以下项目对应的文件的目录是否正确) D) E: ~0 c' E5 g
    • SSLCertificateFile "D:/web/Apache2.2/conf/server.crt"
    • SSLCertificateKeyFile "D:/web/Apache2.2/conf/server.key"
    • SSLCertificateChainFile "D:/web/Apache2.2/conf/ca.crt"- F9 d! e0 P# Z
    (上述内容需要按照服务安装的实际路径填写,除此之外,配置文件内的所有文件路径都需要确认是否与实际路径相符)" t2 j2 s8 X4 i' Z( @3 g8 v
    成功搭建HTTPS:% A, T$ l8 t- q6 y6 r3 N! }

    7 |% m% ~# j( ~' T0 r& H0 y
    : m) b6 h! Q) F! u: m3 B
    $ i& W  t" q8 \- w1 B* c/ }% ~+ e开发各场景的测试页面HTTP内嵌IFRAME HTTPS
    •    
    •     HTTP iframe HTTPS
    •     这是父页面
    •    
    • & n; O, ~! n% C* l
    HTTPS内嵌IFRAME HTTP
    •    
    •     HTTPS iframe HTTP
    •    
    •     这是父页面
    •    

    • $ n/ q; M2 H9 m9 X
    内嵌页面
    •    
    •     Inner HTML
    •     这是子页面
    • $ Q( J' N! U7 m! R: W( s# I9 C
    IFRAME内嵌统计结果
    HTTP内嵌HTTPSHTTPS内嵌HTTPHTTPS内嵌HTTPSHTTP内嵌HTTP
    Chrome正常(有证书)正常(有证书)正常(有证书)正常
    Firefox正常(有证书)正常(有证书)正常(有证书)正常
    IE 9.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    IE 8.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    IE 7.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    Opera正常(有证书)正常(有证书)正常(有证书)正常
    IE 9.0安全风险警告信息:

    IE 9.0安全风险警告信息:


    * G- a3 k# y) }; C# N5 lIE 8.0安全风险警告信息:

    IE 8.0安全风险警告信息

    ( W: _' i/ x: N* {  A. R
    IE 7.0安全风险警告信息:

    IE 7.0安全风险警告信息

    . r6 l) H) G; C: @- ?4 |, ^" t
    JS访问测试父页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.display = function() {
    •         alert(“Parent window.display() called.”);
    •     }
    • // ]]>

    • . a' w$ i4 h$ X% b& I1 ^

      ; S( r: E9 j7 G1 c* h
    子页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.onload = function() {
    •         window.parent && window.parent.display();
    •     }
    • // ]]>
    • ! U) c' T$ [2 `, [& R0 k

      5 s9 J% ^3 f- 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 控制台报错信息


    0 \, o1 O' s1 c- h1 ^IE 8.0 浏览器报错信息:

    IE 8.0 浏览器报错信息

    * v+ j# D+ A. O- y3 o, |+ y
    IE 7.0 浏览器报错信息:

    IE 7.0 浏览器报错信息


    # u% A- U3 S, P" w0 W$ n9 P分析通过上面的测试,浏览器对于HTTPS和HTTP之间用iFrame嵌套并没过于限制,但存在编码问题。另一方面,基于安全考虑,浏览器有对HTTPS和HTTP之间的JavaScript调用有较严格的限制。
    6 o1 k0 E# b, A% ]2 J2 M
    . u5 U0 b1 {4 |+ |) m* N
    1 o7 M8 i0 X. A0 m& _% `% V
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩 转发到微博

    本版积分规则

    关闭

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

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