下沙论坛

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

QQ登录

QQ登录

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

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

[复制链接]
  • TA的每日心情
    擦汗
    4 小时前
  • 签到天数: 2392 天

    [LV.Master]伴坛终老

    跳转到指定楼层
    1
    发表于 2014-3-6 12:16:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
    作者: 阿伦 日期: 2013 年 3 月 21 日分类: HTTP, Javascript标签: HTTP, HTTPS, IFrame, 安全
    + M0 C) s; T/ Z- u" A9 R+ S/ w1 \目的学习如何搭建HTTPS服务;
    4 @/ ?9 _+ p% f) |, w( m- y+ E0 L为开发对安全性有较高要求的页面提供指导,避免不必要的安全漏洞;) ]  V" z6 w. s7 U, P7 N; q
    步骤1.搭建本地HTTPS;9 g( M) p9 l+ H% ]# ?( K* w' ], G2 I
    2.分别开发所有可能的嵌套场景:# _6 Z' n' P& |3 R9 ]/ V) z# e3 M
    • HTTP嵌套HTTPS
    • HTTPS嵌套HTTP
    • HTTPS嵌套HTTPS
    • HTTP嵌套HTTP2 i- _, I2 o( P- D5 K& p
    3.分别在现有主流浏览器的各个版本访问嵌套页面,记录浏览器相关提示及限制;1 z  v+ j) p- n/ S4 n9 t0 Q
    操作记录环境系统环境:Windows 7 64bit: C/ q1 a3 I0 k, w/ s
    服务器:Apache: A3 F" d6 H0 k: d6 N
    数据库:MySQL
    $ F2 N& I& O& T5 [& J服务器语言:PHP
    . u0 g8 G- X& k7 E. y7 f. c( s搭建本地HTTPS下载windows环境的OpenSSL( http://www.openssl.org/related/binaries.html ,由于本人机器使用的是64位系统,所以下载的是64位OpenSSL)  Q, |" A9 e! F6 h* J
    在Command中使用一下命令生成搭建HTTPS所需要的证书及相关文件:
    # s! Z4 n7 g- P6 T( ?4 H5 `(1) 复制apahce2/conf目录openssl.cnf 文件到bin目录' a- E' _& b" e1 c: E
    (2) 生成RSA密钥 (private key) 下面两个命令都可以生成密钥:
    ' \7 ?) q6 ]; `9 g: v# k; ?. |
    • openssl genrsa -des3 -out ca.key
    • openssl genrsa -out ca.key
    • openssl genrsa -out ca.key 1024
      ) S- g# M4 t% E2 t- \# e7 p8 v
    (-des3选项可以加密生成的密钥, 但是Win32平台不支持加密密钥?启动Apache时会产生以下错误信息, “SSLPassPhraseDialog builtin is not supported on Win32″(当时不清楚我就加了-des3参数?且出现这个错误时apache启动不报错?查看日志才发现以上错误。))
    . L  _7 J5 ^/ b3 ~& `6 ?(3) 产生 CA require cert?按提示填入相应的内容:
    3 a5 ^+ H* f+ w3 w% _$ R4 R: V" m
    • openssl req -config openssl.cnf -new -key ca.key -out ca.csr. c" H1 p$ J: [" [
    (4) 产生 CA public cert:' {% C5 O) R' [6 N' W+ ^+ W" Q( A
    • openssl x509 -days 3650 -req -signkey ca.key -in ca.csr -out ca.crt
      + {% ?8 R6 K& o
    (5) 产生 Server private key:
    / z; |. |8 f# [+ D) t/ g
    • openSSL genrsa -out ssl/server.key 1024
      6 t2 |/ _: a+ m" d* i7 ~
    (6) 产生 Server require cert?按提示填入和上边相同的内容:0 J. n1 S" T# W# {0 `$ q/ h
    • openssl req -config openssl.cnf -new -key server.key -out server.csr
      : D, f  b5 {& N
    (7) 产生 Server public key:, Z& @3 r& I  c4 u
    • openssl ca -config openssl.cnf -days 3650 -cert ca.crt -keyfile ca.key -in server.csr -out server.crt
      3 y  k' x2 K8 x- C
    运行这个命令会出错?I am unable to access the ./demoCA/newcerts directory….9 _, D4 i/ u- Q) ?2 G! a+ q/ @
    错误原因是没有手动创建一个CA目录结构( v7 D- `) D9 ^. u
    • └─demoCA
    •     ├─newcerts
    •     ├─index.txt
    •     ├─serial; P' M6 E) k' N4 U! N1 p1 p
    在demoCA中建立 index.txt 空文件, serial文件 , serial文件 中可输入01?此时再运行以上的命令即可生成server.crt。 将生成的 ca.crt、server.crt 和 server.key 放入apache的 conf 目录中
    # a# W  @' r0 i  C$ }8 `(8) 编辑apache的配置文件httpd.conf 去掉以下语句的注释, Include conf/extra/httpd-ssl.conf
    $ L; q5 j7 ~& E
    • # Secure (SSL/TLS) connections
    • Include conf/extra/httpd-ssl.conf
      0 K2 W. H$ l3 N0 \- R1 ?0 I" Q
    (9) 编辑 conf/extra/httpd-ssl.conf
    1 |2 {% ]3 y. Q$ V' c0 Q! x把SSLMutex标签的值改为default
    ! N! G* a, U5 e" Y8 M% O检查以下项目对应的文件的目录是否正确  N) s& X/ ?& Y7 j* \8 |4 L
    • SSLCertificateFile "D:/web/Apache2.2/conf/server.crt"
    • SSLCertificateKeyFile "D:/web/Apache2.2/conf/server.key"
    • SSLCertificateChainFile "D:/web/Apache2.2/conf/ca.crt"
      . C$ l- e; U% y0 |
    (上述内容需要按照服务安装的实际路径填写,除此之外,配置文件内的所有文件路径都需要确认是否与实际路径相符)  }5 l3 i. N  ]/ \: m; Q
    成功搭建HTTPS:" k2 G$ c  y; O! b5 }  ^% q6 `9 [0 O2 X

    % @* T4 x; S4 i8 j: j$ }; F0 J/ Z$ Y8 r  I4 i+ u8 _# k3 @
    , U% ^: n" \* P( x6 C9 ]6 f
    开发各场景的测试页面HTTP内嵌IFRAME HTTPS
    •    
    •     HTTP iframe HTTPS
    •     这是父页面
    •    

    • - t$ w: w3 ^' A
    HTTPS内嵌IFRAME HTTP
    •    
    •     HTTPS iframe HTTP
    •    
    •     这是父页面
    •    
    • & @% G/ U7 Y2 s$ ?, k
    内嵌页面
    •    
    •     Inner HTML
    •     这是子页面
    • ( O0 @, f. k, a# m) D
    IFRAME内嵌统计结果
    HTTP内嵌HTTPSHTTPS内嵌HTTPHTTPS内嵌HTTPSHTTP内嵌HTTP
    Chrome正常(有证书)正常(有证书)正常(有证书)正常
    Firefox正常(有证书)正常(有证书)正常(有证书)正常
    IE 9.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    IE 8.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    IE 7.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    Opera正常(有证书)正常(有证书)正常(有证书)正常
    IE 9.0安全风险警告信息:

    IE 9.0安全风险警告信息:


    $ X! I! E6 A7 |( MIE 8.0安全风险警告信息:

    IE 8.0安全风险警告信息


    9 X7 u/ X4 b8 A8 ~8 FIE 7.0安全风险警告信息:

    IE 7.0安全风险警告信息

    # l) @: ~+ `+ W* t) T: m
    JS访问测试父页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.display = function() {
    •         alert(“Parent window.display() called.”);
    •     }
    • // ]]>

    • * b$ c; P* i. m
      : ^% k5 @# ?* x/ \6 p% A* {
    子页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.onload = function() {
    •         window.parent && window.parent.display();
    •     }
    • // ]]>

    • 5 o2 _& t! s0 ~1 M
      ( @. C  {2 t9 h: W; R3 c! q& G
    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 控制台报错信息


    ' r# n. W- d1 x9 hIE 8.0 浏览器报错信息:

    IE 8.0 浏览器报错信息

    3 [# g5 `- ~/ _2 `7 c8 h/ L
    IE 7.0 浏览器报错信息:

    IE 7.0 浏览器报错信息


    0 @5 s- W3 i7 X+ |分析通过上面的测试,浏览器对于HTTPS和HTTP之间用iFrame嵌套并没过于限制,但存在编码问题。另一方面,基于安全考虑,浏览器有对HTTPS和HTTP之间的JavaScript调用有较严格的限制。
    5 H9 o; s; `  C' d$ y

    0 }( s+ |3 s+ [2 x* @  r
    2 s1 z3 j  D0 U2 M5 f  p4 C
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩

    本版积分规则

    关闭

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

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