下沙论坛

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

QQ登录

QQ登录

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

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

[复制链接]
  • TA的每日心情
    奋斗
    5 小时前
  • 签到天数: 2401 天

    [LV.Master]伴坛终老

    跳转到指定楼层
    1
    发表于 2014-3-6 12:16:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
    作者: 阿伦 日期: 2013 年 3 月 21 日分类: HTTP, Javascript标签: HTTP, HTTPS, IFrame, 安全2 Q. \" _5 R: t4 t' d* L+ c
    目的学习如何搭建HTTPS服务;) Z3 k4 J: O1 M6 c
    为开发对安全性有较高要求的页面提供指导,避免不必要的安全漏洞;' b0 ^; I4 k; f4 R% a* f8 M
    步骤1.搭建本地HTTPS;$ y6 E. i( x+ f# u  C+ q2 \2 W4 E
    2.分别开发所有可能的嵌套场景:
    5 K7 A( z0 K! c. i* M
    • HTTP嵌套HTTPS
    • HTTPS嵌套HTTP
    • HTTPS嵌套HTTPS
    • HTTP嵌套HTTP& q1 l* d$ ?/ _+ [( N$ f) l
    3.分别在现有主流浏览器的各个版本访问嵌套页面,记录浏览器相关提示及限制;- b+ G4 d+ m8 x0 c
    操作记录环境系统环境:Windows 7 64bit
    2 l. w6 ?8 Z- q5 o$ f& U0 h服务器:Apache' z1 v  v0 g& h7 s5 W+ V+ d8 J
    数据库:MySQL2 t; t/ h  O; ], G. Q! Y
    服务器语言:PHP0 A% |7 ?" z1 x! I6 G, T$ c4 q
    搭建本地HTTPS下载windows环境的OpenSSL( http://www.openssl.org/related/binaries.html ,由于本人机器使用的是64位系统,所以下载的是64位OpenSSL)' r& E8 `: U1 n9 U$ f! F
    在Command中使用一下命令生成搭建HTTPS所需要的证书及相关文件:5 Q: R) Q8 w! l8 d( f' Y5 \, ~
    (1) 复制apahce2/conf目录openssl.cnf 文件到bin目录
      R- [( c# F4 Q0 Q! F) t* b  v(2) 生成RSA密钥 (private key) 下面两个命令都可以生成密钥:! \" j( A+ B7 ]8 D5 ?% r: [
    • openssl genrsa -des3 -out ca.key
    • openssl genrsa -out ca.key
    • openssl genrsa -out ca.key 1024! ^0 }; b) `8 l, G( |
    (-des3选项可以加密生成的密钥, 但是Win32平台不支持加密密钥?启动Apache时会产生以下错误信息, “SSLPassPhraseDialog builtin is not supported on Win32″(当时不清楚我就加了-des3参数?且出现这个错误时apache启动不报错?查看日志才发现以上错误。))
    7 H, Q- a3 V8 A8 v* k5 X+ J(3) 产生 CA require cert?按提示填入相应的内容:; S6 W" v1 X2 m$ Z
    • openssl req -config openssl.cnf -new -key ca.key -out ca.csr+ D1 d5 A+ H# M
    (4) 产生 CA public cert:
    1 b# W, Y' t- ?5 ?
    • openssl x509 -days 3650 -req -signkey ca.key -in ca.csr -out ca.crt  [8 _+ A  `6 x" Y2 R5 `
    (5) 产生 Server private key:
    4 @& A' u0 O! }' a9 |
    • openSSL genrsa -out ssl/server.key 1024
      5 l. ^! y) a6 m6 V) ]' C" r
    (6) 产生 Server require cert?按提示填入和上边相同的内容:; C& Z# {1 L: P
    • openssl req -config openssl.cnf -new -key server.key -out server.csr
      / R" e6 y* W5 B  L( ~
    (7) 产生 Server public key:
    * M5 y' ~' q* |
    • openssl ca -config openssl.cnf -days 3650 -cert ca.crt -keyfile ca.key -in server.csr -out server.crt. \% i. u9 D; y/ v& r
    运行这个命令会出错?I am unable to access the ./demoCA/newcerts directory….' Y2 }+ q- s* i  C) h: K
    错误原因是没有手动创建一个CA目录结构
      ]( _3 N7 u* I- P# o! f* ?+ p
    • └─demoCA
    •     ├─newcerts
    •     ├─index.txt
    •     ├─serial
      , |+ h5 A0 N5 X  K# S; {
    在demoCA中建立 index.txt 空文件, serial文件 , serial文件 中可输入01?此时再运行以上的命令即可生成server.crt。 将生成的 ca.crt、server.crt 和 server.key 放入apache的 conf 目录中
    1 h! S3 p* X# j4 o" a. I" f(8) 编辑apache的配置文件httpd.conf 去掉以下语句的注释, Include conf/extra/httpd-ssl.conf% k! \8 v/ F0 a0 @: Q& p
    • # Secure (SSL/TLS) connections
    • Include conf/extra/httpd-ssl.conf
      5 I& Y8 H# ]. x2 h( Z' E
    (9) 编辑 conf/extra/httpd-ssl.conf
    % e* a* x" L* c3 _把SSLMutex标签的值改为default' I/ D2 g) N# q0 t* W  b, g* t7 \/ ]
    检查以下项目对应的文件的目录是否正确2 `  C1 d4 ?+ B- z
    • SSLCertificateFile "D:/web/Apache2.2/conf/server.crt"
    • SSLCertificateKeyFile "D:/web/Apache2.2/conf/server.key"
    • SSLCertificateChainFile "D:/web/Apache2.2/conf/ca.crt"
      . Z3 d5 ?6 T6 _2 n; ]# A( S9 y
    (上述内容需要按照服务安装的实际路径填写,除此之外,配置文件内的所有文件路径都需要确认是否与实际路径相符)
    0 E1 }' `3 v6 W2 ~) L成功搭建HTTPS:
    - C, e" f$ z- ?8 M2 }( x4 q6 b
    4 A0 A7 L. ~& W7 D8 N# A9 g0 R+ N" c) K+ c) K+ [
    ( W, D9 }! Z7 R) }( H$ s! [
    开发各场景的测试页面HTTP内嵌IFRAME HTTPS
    •    
    •     HTTP iframe HTTPS
    •     这是父页面
    •    
    • / D7 J# c+ x. v' O$ P. k
    HTTPS内嵌IFRAME HTTP
    •    
    •     HTTPS iframe HTTP
    •    
    •     这是父页面
    •    

    • 3 M) s" z+ F9 Y7 |' {% W% I
    内嵌页面
    •    
    •     Inner HTML
    •     这是子页面

    • 6 j( T; R5 o! V$ |
    IFRAME内嵌统计结果
    HTTP内嵌HTTPSHTTPS内嵌HTTPHTTPS内嵌HTTPSHTTP内嵌HTTP
    Chrome正常(有证书)正常(有证书)正常(有证书)正常
    Firefox正常(有证书)正常(有证书)正常(有证书)正常
    IE 9.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    IE 8.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    IE 7.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    Opera正常(有证书)正常(有证书)正常(有证书)正常
    IE 9.0安全风险警告信息:

    IE 9.0安全风险警告信息:

    1 z7 O) c  y  d2 |
    IE 8.0安全风险警告信息:

    IE 8.0安全风险警告信息

    5 K( l) F& t) z8 k4 |6 U7 l4 U
    IE 7.0安全风险警告信息:

    IE 7.0安全风险警告信息

    ; a5 ]% ^0 C2 n
    JS访问测试父页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.display = function() {
    •         alert(“Parent window.display() called.”);
    •     }
    • // ]]>

    • # p+ J) A+ _: C0 C0 I) U1 h8 o. }9 }1 S
      $ b0 n  j( f6 l8 b. T/ q( }
    子页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.onload = function() {
    •         window.parent && window.parent.display();
    •     }
    • // ]]>

    • / a! ^; ]) }- K5 j, j) x0 N
      ! e4 m9 {6 R) c1 K
    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 控制台报错信息

    6 D, T# l8 \) N! B+ M
    IE 8.0 浏览器报错信息:

    IE 8.0 浏览器报错信息


    ! F( s* m, h8 D$ ?& X4 B6 A% lIE 7.0 浏览器报错信息:

    IE 7.0 浏览器报错信息

    " s3 @9 o( a; ]* t. E+ k
    分析通过上面的测试,浏览器对于HTTPS和HTTP之间用iFrame嵌套并没过于限制,但存在编码问题。另一方面,基于安全考虑,浏览器有对HTTPS和HTTP之间的JavaScript调用有较严格的限制。
    . C- h% P4 u$ f' t6 x4 ]) O9 H* S" G

    / L: c* T9 ]0 x' ^7 }) T1 L+ u% I$ r4 n6 }; g# p! A6 i3 A. n
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩

    本版积分规则

    关闭

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

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