下沙论坛

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

QQ登录

QQ登录

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

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

[复制链接]
  • TA的每日心情
    擦汗
    5 天前
  • 签到天数: 2402 天

    [LV.Master]伴坛终老

    跳转到指定楼层
    1
    发表于 2014-3-6 12:16:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
    作者: 阿伦 日期: 2013 年 3 月 21 日分类: HTTP, Javascript标签: HTTP, HTTPS, IFrame, 安全7 W- S" x6 H, `! _0 b  |' J6 Q( z
    目的学习如何搭建HTTPS服务;1 F9 L9 U& N4 W/ z9 t7 ^
    为开发对安全性有较高要求的页面提供指导,避免不必要的安全漏洞;/ z% r% I  i6 ~
    步骤1.搭建本地HTTPS;
    1 v; `/ b! _9 l# K6 F# k& W# t1 q* p2.分别开发所有可能的嵌套场景:- {0 `$ m& F7 f# n  [! |* ?- I+ i
    • HTTP嵌套HTTPS
    • HTTPS嵌套HTTP
    • HTTPS嵌套HTTPS
    • HTTP嵌套HTTP& E' Q# k, D4 @2 w3 ?8 M
    3.分别在现有主流浏览器的各个版本访问嵌套页面,记录浏览器相关提示及限制;' A9 B9 y. Y" ?! l4 N) R' z: A
    操作记录环境系统环境:Windows 7 64bit9 l7 h) d0 s5 ]/ s7 [
    服务器:Apache2 ?$ ?" ?. v+ X: ]! d8 G0 ?9 [
    数据库:MySQL! q2 w$ u* D* t  L- B
    服务器语言:PHP
    + E! H  L% A' z" h. T4 M搭建本地HTTPS下载windows环境的OpenSSL( http://www.openssl.org/related/binaries.html ,由于本人机器使用的是64位系统,所以下载的是64位OpenSSL)
      z0 Y7 [. D; B在Command中使用一下命令生成搭建HTTPS所需要的证书及相关文件:% T1 b, m8 j/ |6 a2 n. k/ @/ M
    (1) 复制apahce2/conf目录openssl.cnf 文件到bin目录
    % s7 o6 b- _, U7 V# |( Z(2) 生成RSA密钥 (private key) 下面两个命令都可以生成密钥:8 O5 n2 r- ]2 H- `& W* o
    • openssl genrsa -des3 -out ca.key
    • openssl genrsa -out ca.key
    • openssl genrsa -out ca.key 1024! ]- U" D5 Q0 L
    (-des3选项可以加密生成的密钥, 但是Win32平台不支持加密密钥?启动Apache时会产生以下错误信息, “SSLPassPhraseDialog builtin is not supported on Win32″(当时不清楚我就加了-des3参数?且出现这个错误时apache启动不报错?查看日志才发现以上错误。))- S2 \# O& g& L+ o. x# @. e
    (3) 产生 CA require cert?按提示填入相应的内容:4 a& P1 Q! R+ f
    • openssl req -config openssl.cnf -new -key ca.key -out ca.csr  u& f$ ^2 u+ D( {
    (4) 产生 CA public cert:7 s8 K: p- c  n& y: |4 u/ @
    • openssl x509 -days 3650 -req -signkey ca.key -in ca.csr -out ca.crt
      ; m5 \# c, f1 {/ a8 g1 ?& T
    (5) 产生 Server private key:, ^. c: y) o7 T  E9 T2 F" }5 `
    • openSSL genrsa -out ssl/server.key 10245 v6 w5 O$ X! `5 A5 b
    (6) 产生 Server require cert?按提示填入和上边相同的内容:
    5 H5 |' r/ w* L  J5 s) {. X, {7 e: _
    • openssl req -config openssl.cnf -new -key server.key -out server.csr
      5 W6 J4 V/ V, F
    (7) 产生 Server public key:- ~% }& z1 S1 U# b$ Y! q
    • openssl ca -config openssl.cnf -days 3650 -cert ca.crt -keyfile ca.key -in server.csr -out server.crt* a8 Y: ~, p. J
    运行这个命令会出错?I am unable to access the ./demoCA/newcerts directory…." h0 K3 r, \" I
    错误原因是没有手动创建一个CA目录结构
    0 x/ ]7 m) o* l/ X; H
    • └─demoCA
    •     ├─newcerts
    •     ├─index.txt
    •     ├─serial; e+ c, |. J; x- Z3 Y
    在demoCA中建立 index.txt 空文件, serial文件 , serial文件 中可输入01?此时再运行以上的命令即可生成server.crt。 将生成的 ca.crt、server.crt 和 server.key 放入apache的 conf 目录中
    . z  S3 _: C' s4 D2 N9 W(8) 编辑apache的配置文件httpd.conf 去掉以下语句的注释, Include conf/extra/httpd-ssl.conf. Q) ~4 |: ~1 y/ [: b! ?$ S
    • # Secure (SSL/TLS) connections
    • Include conf/extra/httpd-ssl.conf6 y0 @4 E* a" s- @4 a
    (9) 编辑 conf/extra/httpd-ssl.conf8 Q0 Z2 F: }6 F" g  N0 F+ b9 M+ G) w
    把SSLMutex标签的值改为default
    ! _2 Q! Y9 ^3 ?6 `* [检查以下项目对应的文件的目录是否正确0 ?& t  }- J, X1 B$ Y
    • SSLCertificateFile "D:/web/Apache2.2/conf/server.crt"
    • SSLCertificateKeyFile "D:/web/Apache2.2/conf/server.key"
    • SSLCertificateChainFile "D:/web/Apache2.2/conf/ca.crt"7 d0 x; S2 q" H2 x9 t
    (上述内容需要按照服务安装的实际路径填写,除此之外,配置文件内的所有文件路径都需要确认是否与实际路径相符)% s0 z8 {- K' [. E. x
    成功搭建HTTPS:, n7 d$ y3 }0 f4 `7 L

    0 H2 Q  _4 o6 W+ Z
    # V9 `1 i& T" h- p+ _' x& J. g9 ~
    开发各场景的测试页面HTTP内嵌IFRAME HTTPS
    •    
    •     HTTP iframe HTTPS
    •     这是父页面
    •    
    • / K" g8 {' e0 j0 ?0 T  T7 p, q
    HTTPS内嵌IFRAME HTTP
    •    
    •     HTTPS iframe HTTP
    •    
    •     这是父页面
    •    

    • 9 S' }8 d4 _4 f; ?# N, S
    内嵌页面
    •    
    •     Inner HTML
    •     这是子页面

    • ' i/ V) G- l( ^0 e1 L7 e
    IFRAME内嵌统计结果
    HTTP内嵌HTTPSHTTPS内嵌HTTPHTTPS内嵌HTTPSHTTP内嵌HTTP
    Chrome正常(有证书)正常(有证书)正常(有证书)正常
    Firefox正常(有证书)正常(有证书)正常(有证书)正常
    IE 9.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    IE 8.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    IE 7.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    Opera正常(有证书)正常(有证书)正常(有证书)正常
    IE 9.0安全风险警告信息:

    IE 9.0安全风险警告信息:


    * d& k. Z# K5 y( v' o) ZIE 8.0安全风险警告信息:

    IE 8.0安全风险警告信息


    ' V+ O. {3 m  h3 g9 k# `IE 7.0安全风险警告信息:

    IE 7.0安全风险警告信息

    ; e! a) z% c9 R2 G6 y
    JS访问测试父页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.display = function() {
    •         alert(“Parent window.display() called.”);
    •     }
    • // ]]>
    • . L. f2 ?( D+ {! p7 \

      % b2 f4 G2 |( V" I1 h0 x" y
    子页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.onload = function() {
    •         window.parent && window.parent.display();
    •     }
    • // ]]>
    • ) v5 d0 I0 P8 Q7 |7 O
      ' [# b2 V+ N/ C, T$ b# O
    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 b; x! h& S7 y' @! [. V. L' HIE 8.0 浏览器报错信息:

    IE 8.0 浏览器报错信息


    ' K% T1 x! B8 @IE 7.0 浏览器报错信息:

    IE 7.0 浏览器报错信息

    . n0 D3 P# x4 ~+ e3 J5 a
    分析通过上面的测试,浏览器对于HTTPS和HTTP之间用iFrame嵌套并没过于限制,但存在编码问题。另一方面,基于安全考虑,浏览器有对HTTPS和HTTP之间的JavaScript调用有较严格的限制。7 [2 P4 j4 f# P* _3 ?4 B) L- G5 B8 D

    + a, i/ f# m( f, g9 S8 q
      X) g2 A+ ?( y
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩

    本版积分规则

    关闭

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

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