下沙论坛

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

QQ登录

QQ登录

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

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

[复制链接]
  • TA的每日心情
    奋斗
    昨天 11:21
  • 签到天数: 2393 天

    [LV.Master]伴坛终老

    跳转到指定楼层
    1
    发表于 2014-3-6 12:16:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
    作者: 阿伦 日期: 2013 年 3 月 21 日分类: HTTP, Javascript标签: HTTP, HTTPS, IFrame, 安全
    " f/ N- C! E$ F8 p3 S目的学习如何搭建HTTPS服务;* d/ v: q- D5 k+ P& h( M& B2 X
    为开发对安全性有较高要求的页面提供指导,避免不必要的安全漏洞;6 X# I1 ~& _+ t1 F- N* @  z
    步骤1.搭建本地HTTPS;
    5 J" q, p5 i4 M# |2.分别开发所有可能的嵌套场景:
    " `& Q3 Y5 T$ q% |3 ^* @
    • HTTP嵌套HTTPS
    • HTTPS嵌套HTTP
    • HTTPS嵌套HTTPS
    • HTTP嵌套HTTP
      9 O$ ?" a( u, g6 Y! n7 Z7 r
    3.分别在现有主流浏览器的各个版本访问嵌套页面,记录浏览器相关提示及限制;4 L( Z5 d! @% b# n) `' b& w
    操作记录环境系统环境:Windows 7 64bit, A/ J. |8 u) s3 [$ P; r5 `) b, M
    服务器:Apache
    8 H6 q; D  J, g/ P4 e数据库:MySQL9 U& c; A. U* `
    服务器语言:PHP
    & _  d! N) y& o" k( _* {搭建本地HTTPS下载windows环境的OpenSSL( http://www.openssl.org/related/binaries.html ,由于本人机器使用的是64位系统,所以下载的是64位OpenSSL)9 T9 a: S8 ?0 T1 T
    在Command中使用一下命令生成搭建HTTPS所需要的证书及相关文件:/ _% C: }% ~6 c# |
    (1) 复制apahce2/conf目录openssl.cnf 文件到bin目录, X) k5 `( `0 w: k% l
    (2) 生成RSA密钥 (private key) 下面两个命令都可以生成密钥:! x! A1 Y" Z' n1 I7 v- m
    • openssl genrsa -des3 -out ca.key
    • openssl genrsa -out ca.key
    • openssl genrsa -out ca.key 1024
      8 m: x9 t& q9 `: M  e
    (-des3选项可以加密生成的密钥, 但是Win32平台不支持加密密钥?启动Apache时会产生以下错误信息, “SSLPassPhraseDialog builtin is not supported on Win32″(当时不清楚我就加了-des3参数?且出现这个错误时apache启动不报错?查看日志才发现以上错误。)), p$ u9 B0 V" O* J, G" m, V  w
    (3) 产生 CA require cert?按提示填入相应的内容:
    0 K. S$ C5 e; }# @8 }7 D
    • openssl req -config openssl.cnf -new -key ca.key -out ca.csr
      7 \! |5 [- z$ r* A* m1 A
    (4) 产生 CA public cert:
    ) V+ Q3 v9 Z; {, E
    • openssl x509 -days 3650 -req -signkey ca.key -in ca.csr -out ca.crt
      " D/ z, J5 O( `8 n& ]$ h
    (5) 产生 Server private key:. L6 ]& [  Z$ s, f0 k4 z# |6 b4 Q
    • openSSL genrsa -out ssl/server.key 1024
      4 {* y* ?2 F( H$ X- P$ b! ]
    (6) 产生 Server require cert?按提示填入和上边相同的内容:
      n/ x& G6 P' D* Q2 l; @
    • openssl req -config openssl.cnf -new -key server.key -out server.csr
      9 [' Y/ s) V8 `/ C" m
    (7) 产生 Server public key:
    " u4 P9 z) c! p# {, K- R0 V6 v  b
    • openssl ca -config openssl.cnf -days 3650 -cert ca.crt -keyfile ca.key -in server.csr -out server.crt
      6 |' o+ M3 v. k$ o9 I
    运行这个命令会出错?I am unable to access the ./demoCA/newcerts directory…./ o# \5 w0 e2 U2 P- p8 ~& ]: C
    错误原因是没有手动创建一个CA目录结构
    % m% m% {+ @; S5 D! Z) ^
    • └─demoCA
    •     ├─newcerts
    •     ├─index.txt
    •     ├─serial
      0 N, `0 F7 J4 u+ D- c: q9 \
    在demoCA中建立 index.txt 空文件, serial文件 , serial文件 中可输入01?此时再运行以上的命令即可生成server.crt。 将生成的 ca.crt、server.crt 和 server.key 放入apache的 conf 目录中: H& E2 j* W6 m1 M
    (8) 编辑apache的配置文件httpd.conf 去掉以下语句的注释, Include conf/extra/httpd-ssl.conf9 Y1 z& ~$ ?( O. M8 ?" Q
    • # Secure (SSL/TLS) connections
    • Include conf/extra/httpd-ssl.conf) Z( x1 W+ A8 G+ N
    (9) 编辑 conf/extra/httpd-ssl.conf
    & F0 E/ b: C% n! @! z' ]把SSLMutex标签的值改为default
    " q3 A7 D/ I8 v7 o3 C$ _检查以下项目对应的文件的目录是否正确3 Z. f1 x) M( s
    • SSLCertificateFile "D:/web/Apache2.2/conf/server.crt"
    • SSLCertificateKeyFile "D:/web/Apache2.2/conf/server.key"
    • SSLCertificateChainFile "D:/web/Apache2.2/conf/ca.crt"
      # @8 w# T* k/ e7 S  V0 t
    (上述内容需要按照服务安装的实际路径填写,除此之外,配置文件内的所有文件路径都需要确认是否与实际路径相符)* W) C6 Y- d0 E- y( r
    成功搭建HTTPS:8 n% c0 Y$ L( ^0 e) ~
    ( H3 c3 D  n4 {' s+ D
    $ K, ]; D0 g! \

    / \! s, e% g+ U+ \( V- Y+ f开发各场景的测试页面HTTP内嵌IFRAME HTTPS
    •    
    •     HTTP iframe HTTPS
    •     这是父页面
    •    
    • 1 m$ ^5 ?  g) L9 j! X( ^% T: S) t! b
    HTTPS内嵌IFRAME HTTP
    •    
    •     HTTPS iframe HTTP
    •    
    •     这是父页面
    •    

    • 8 H, |$ b& g2 a6 T
    内嵌页面
    •    
    •     Inner HTML
    •     这是子页面
    • * |: K6 o7 p: G: 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安全风险警告信息:

    # ^6 S- \; f7 `' T/ k
    IE 8.0安全风险警告信息:

    IE 8.0安全风险警告信息


    5 ~- o/ _; {- ^: B$ Z; _4 W, P% E- ]0 KIE 7.0安全风险警告信息:

    IE 7.0安全风险警告信息


    + J" q" S- @. |0 o! V* _JS访问测试父页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.display = function() {
    •         alert(“Parent window.display() called.”);
    •     }
    • // ]]>

    • 1 c6 v+ g! B0 }. w

      % o8 O& M* S6 [' k, X3 x$ S1 y
    子页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.onload = function() {
    •         window.parent && window.parent.display();
    •     }
    • // ]]>

    • : t5 a3 @9 h1 M& {' t1 |5 h) ]
      % y, H7 o- `) p9 [2 Y- ]
    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 g+ v( U" }+ S$ B' o7 D' FIE 8.0 浏览器报错信息:

    IE 8.0 浏览器报错信息

    ) _$ [3 J$ P# C3 ^! B6 W( g
    IE 7.0 浏览器报错信息:

    IE 7.0 浏览器报错信息

    % X* {. Q& R2 c* h  P' t, Z7 d- J0 e
    分析通过上面的测试,浏览器对于HTTPS和HTTP之间用iFrame嵌套并没过于限制,但存在编码问题。另一方面,基于安全考虑,浏览器有对HTTPS和HTTP之间的JavaScript调用有较严格的限制。: c+ {4 {  A( h

    " \$ s4 N& G* j& N4 C$ Y
      `1 F0 ]' B% ]
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩

    本版积分规则

    关闭

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

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