下沙论坛

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

QQ登录

QQ登录

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

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

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

    [LV.Master]伴坛终老

    跳转到指定楼层
    1
    发表于 2014-3-6 12:16:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
    作者: 阿伦 日期: 2013 年 3 月 21 日分类: HTTP, Javascript标签: HTTP, HTTPS, IFrame, 安全( o4 J$ P3 v4 E" [) C
    目的学习如何搭建HTTPS服务;' R% R/ e6 M& q" ?% ^3 r* c) a; R/ a
    为开发对安全性有较高要求的页面提供指导,避免不必要的安全漏洞;$ T- L! j1 W5 K6 ]+ D! r; y
    步骤1.搭建本地HTTPS;  L- o3 d; u* t2 u
    2.分别开发所有可能的嵌套场景:
    + R  o: |/ }, B; a/ s0 c
    • HTTP嵌套HTTPS
    • HTTPS嵌套HTTP
    • HTTPS嵌套HTTPS
    • HTTP嵌套HTTP% n+ v4 w1 e6 g- }
    3.分别在现有主流浏览器的各个版本访问嵌套页面,记录浏览器相关提示及限制;) N8 G% J5 J, `: U
    操作记录环境系统环境:Windows 7 64bit
    / |  E  k# v7 f5 J服务器:Apache: n) A6 R" U% U) o/ d) ^+ M
    数据库:MySQL
      c) ?* N5 q9 V& f6 a  I! j服务器语言:PHP
    ! h. b, x; l8 N# a搭建本地HTTPS下载windows环境的OpenSSL( http://www.openssl.org/related/binaries.html ,由于本人机器使用的是64位系统,所以下载的是64位OpenSSL)
    8 P/ p" E  f" ]5 Y; [6 H  X在Command中使用一下命令生成搭建HTTPS所需要的证书及相关文件:
    " `  u9 y7 }5 b3 O% w0 _7 z- Z(1) 复制apahce2/conf目录openssl.cnf 文件到bin目录. [: v% R% T! \2 D' E
    (2) 生成RSA密钥 (private key) 下面两个命令都可以生成密钥:
    ( j# h. {4 b- ?+ s. z  l
    • openssl genrsa -des3 -out ca.key
    • openssl genrsa -out ca.key
    • openssl genrsa -out ca.key 1024
      9 x( O: W: H  C; Q  q9 ?
    (-des3选项可以加密生成的密钥, 但是Win32平台不支持加密密钥?启动Apache时会产生以下错误信息, “SSLPassPhraseDialog builtin is not supported on Win32″(当时不清楚我就加了-des3参数?且出现这个错误时apache启动不报错?查看日志才发现以上错误。))' R$ W' m; Y$ |5 U7 b
    (3) 产生 CA require cert?按提示填入相应的内容:5 {* U4 S/ `& m% t5 _- B4 w
    • openssl req -config openssl.cnf -new -key ca.key -out ca.csr8 B- f( g/ Z& [: ~/ h& ^1 D! b
    (4) 产生 CA public cert:0 U3 o, L4 y, u2 S( K+ y8 X
    • openssl x509 -days 3650 -req -signkey ca.key -in ca.csr -out ca.crt& ?; j( a. q) M- Q4 d" C
    (5) 产生 Server private key:  N9 k) S. x* l) A# b# k7 v
    • openSSL genrsa -out ssl/server.key 1024( y1 H6 ^$ y  r, m, g4 d
    (6) 产生 Server require cert?按提示填入和上边相同的内容:! f" d- T7 J$ z9 b
    • openssl req -config openssl.cnf -new -key server.key -out server.csr8 f" h3 N: h& I- k2 o+ J
    (7) 产生 Server public key:
    ! I! W# P, b3 ?: A1 _" @% G
    • openssl ca -config openssl.cnf -days 3650 -cert ca.crt -keyfile ca.key -in server.csr -out server.crt
      5 n$ B8 E3 D, L4 _1 ]# ^
    运行这个命令会出错?I am unable to access the ./demoCA/newcerts directory….
    - Y; _% S: T; @; Q' y3 y错误原因是没有手动创建一个CA目录结构) c& u. k( }' b8 v
    • └─demoCA
    •     ├─newcerts
    •     ├─index.txt
    •     ├─serial
      9 e! C9 i5 `& C' K  R  F5 T# ]
    在demoCA中建立 index.txt 空文件, serial文件 , serial文件 中可输入01?此时再运行以上的命令即可生成server.crt。 将生成的 ca.crt、server.crt 和 server.key 放入apache的 conf 目录中
    . V  n+ z5 M. d(8) 编辑apache的配置文件httpd.conf 去掉以下语句的注释, Include conf/extra/httpd-ssl.conf
    % Z4 W5 q, _/ f9 T' q& K
    • # Secure (SSL/TLS) connections
    • Include conf/extra/httpd-ssl.conf
      2 u& C, r% }/ s. b; e
    (9) 编辑 conf/extra/httpd-ssl.conf9 ?* u; O0 C/ M" {1 z3 V. q
    把SSLMutex标签的值改为default
    5 V, D6 C9 D6 b4 e3 N4 Y检查以下项目对应的文件的目录是否正确2 G- O0 @; o9 q: Q
    • SSLCertificateFile "D:/web/Apache2.2/conf/server.crt"
    • SSLCertificateKeyFile "D:/web/Apache2.2/conf/server.key"
    • SSLCertificateChainFile "D:/web/Apache2.2/conf/ca.crt", Z% P7 m& t4 `6 K+ z0 O
    (上述内容需要按照服务安装的实际路径填写,除此之外,配置文件内的所有文件路径都需要确认是否与实际路径相符)2 [% p3 p* d; n: n+ V, b, M
    成功搭建HTTPS:( ^+ A2 ^3 y# R* k9 V2 s8 Y- S% @
    + U) j$ @5 ~0 {, o3 r3 v6 P/ s1 K6 M
    * w" V7 K2 U6 S  Q

    * @) [  d1 I" m: a' C开发各场景的测试页面HTTP内嵌IFRAME HTTPS
    •    
    •     HTTP iframe HTTPS
    •     这是父页面
    •    
    • ) t8 Y  R" S6 R9 J, ]
    HTTPS内嵌IFRAME HTTP
    •    
    •     HTTPS iframe HTTP
    •    
    •     这是父页面
    •    

    • $ h, k( E2 i1 v2 Z9 d, s4 {
    内嵌页面
    •    
    •     Inner HTML
    •     这是子页面
    • 1 [" }' W, c9 B& ?
    IFRAME内嵌统计结果
    HTTP内嵌HTTPSHTTPS内嵌HTTPHTTPS内嵌HTTPSHTTP内嵌HTTP
    Chrome正常(有证书)正常(有证书)正常(有证书)正常
    Firefox正常(有证书)正常(有证书)正常(有证书)正常
    IE 9.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    IE 8.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    IE 7.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    Opera正常(有证书)正常(有证书)正常(有证书)正常
    IE 9.0安全风险警告信息:

    IE 9.0安全风险警告信息:


    ! \+ U" `1 O, P8 O+ ?IE 8.0安全风险警告信息:

    IE 8.0安全风险警告信息


    5 L7 H# T' c6 f# R% W! ^IE 7.0安全风险警告信息:

    IE 7.0安全风险警告信息

    + ^% H: c; F7 @0 r3 G6 z
    JS访问测试父页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.display = function() {
    •         alert(“Parent window.display() called.”);
    •     }
    • // ]]>

    • 0 j$ Z* ?' m. D2 W$ J4 z

      & z4 A! w  M' ~( ~6 w/ c  q# X
    子页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.onload = function() {
    •         window.parent && window.parent.display();
    •     }
    • // ]]>

    • , u# x1 ]0 l8 C1 _6 |
      5 P) a2 @. \# h  r, P, t& B# G4 l6 c
    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 控制台报错信息


    2 z2 y. p) l& ^& yIE 8.0 浏览器报错信息:

    IE 8.0 浏览器报错信息

    6 A$ S' i3 ?. U8 \5 t, {
    IE 7.0 浏览器报错信息:

    IE 7.0 浏览器报错信息

    * m# a7 y7 v& s& W2 m1 s
    分析通过上面的测试,浏览器对于HTTPS和HTTP之间用iFrame嵌套并没过于限制,但存在编码问题。另一方面,基于安全考虑,浏览器有对HTTPS和HTTP之间的JavaScript调用有较严格的限制。
    7 _; B; q2 M6 Y, Z/ r3 C% O- a
    / B' J+ X" Q3 J

      k0 w. M& J  }) \
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩

    本版积分规则

    关闭

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

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