下沙论坛

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

用新浪微博连接

一步搞定

QQ登录

QQ登录

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

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

[复制链接]
  • TA的每日心情
    奋斗
    昨天 08:55
  • 签到天数: 2340 天

    [LV.Master]伴坛终老

    跳转到指定楼层
    1
    发表于 2014-3-6 12:16:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
    作者: 阿伦 日期: 2013 年 3 月 21 日分类: HTTP, Javascript标签: HTTP, HTTPS, IFrame, 安全
    5 o$ a( T# p% C( i$ [& L5 v; I( n目的学习如何搭建HTTPS服务;# ]! d$ K" k) V' Q  A3 T
    为开发对安全性有较高要求的页面提供指导,避免不必要的安全漏洞;
    / R0 G0 D& u7 a+ ~. M步骤1.搭建本地HTTPS;
    / f* |" Q: _. f( a  t+ T' d$ U: q$ J2.分别开发所有可能的嵌套场景:6 i4 Q9 v! |9 E; ~7 _, W7 [
    • HTTP嵌套HTTPS
    • HTTPS嵌套HTTP
    • HTTPS嵌套HTTPS
    • HTTP嵌套HTTP8 L- M* }$ _, v) Y8 X) Y
    3.分别在现有主流浏览器的各个版本访问嵌套页面,记录浏览器相关提示及限制;" `. Z2 G3 t) M. N5 Z! ?
    操作记录环境系统环境:Windows 7 64bit
    0 w# J% x  b+ _; S" J6 O) R& g+ H服务器:Apache
    1 d( h) ~* s- T  w# K) R数据库:MySQL& v* {8 v7 f$ @& g9 j
    服务器语言:PHP
    . J2 g6 Q- _, I5 n搭建本地HTTPS下载windows环境的OpenSSL( http://www.openssl.org/related/binaries.html ,由于本人机器使用的是64位系统,所以下载的是64位OpenSSL)
    1 b' Q/ e( }0 A( z) D在Command中使用一下命令生成搭建HTTPS所需要的证书及相关文件:6 O  h, _# u( P& |$ [% ~
    (1) 复制apahce2/conf目录openssl.cnf 文件到bin目录
    # ^3 M) x$ J* D2 d2 v" o" }. A7 E(2) 生成RSA密钥 (private key) 下面两个命令都可以生成密钥:
    # I6 E! K% [* l# r- f
    • openssl genrsa -des3 -out ca.key
    • openssl genrsa -out ca.key
    • openssl genrsa -out ca.key 1024
      4 C4 a3 }# x9 x6 I0 _- S
    (-des3选项可以加密生成的密钥, 但是Win32平台不支持加密密钥?启动Apache时会产生以下错误信息, “SSLPassPhraseDialog builtin is not supported on Win32″(当时不清楚我就加了-des3参数?且出现这个错误时apache启动不报错?查看日志才发现以上错误。))
    $ k4 m6 \; R  \: V(3) 产生 CA require cert?按提示填入相应的内容:
    ) T+ f0 L! a/ x. {& u
    • openssl req -config openssl.cnf -new -key ca.key -out ca.csr
      / a( n! }5 R- ?
    (4) 产生 CA public cert:
    # x% t* C8 R0 u* P
    • openssl x509 -days 3650 -req -signkey ca.key -in ca.csr -out ca.crt1 u4 [1 U, |1 _, {
    (5) 产生 Server private key:
    8 h. {' h$ O% m' B
    • openSSL genrsa -out ssl/server.key 1024+ d$ `) T7 L" \8 P8 L
    (6) 产生 Server require cert?按提示填入和上边相同的内容:
    $ s5 j+ B2 x! b3 d5 e1 K
    • openssl req -config openssl.cnf -new -key server.key -out server.csr6 l: F" J9 Z$ T" Z: @' A
    (7) 产生 Server public key:" k' B0 @5 f# l& `" |8 z
    • openssl ca -config openssl.cnf -days 3650 -cert ca.crt -keyfile ca.key -in server.csr -out server.crt# C' S8 ?' d' E+ u4 A4 q+ G; z1 f# Y
    运行这个命令会出错?I am unable to access the ./demoCA/newcerts directory….
    % i9 \+ H5 h+ V; `3 e错误原因是没有手动创建一个CA目录结构* F8 J  f4 R9 I
    • └─demoCA
    •     ├─newcerts
    •     ├─index.txt
    •     ├─serial% ?' y' j3 g: @: q7 N9 |9 d
    在demoCA中建立 index.txt 空文件, serial文件 , serial文件 中可输入01?此时再运行以上的命令即可生成server.crt。 将生成的 ca.crt、server.crt 和 server.key 放入apache的 conf 目录中  ?6 h5 d4 Z, Q  H
    (8) 编辑apache的配置文件httpd.conf 去掉以下语句的注释, Include conf/extra/httpd-ssl.conf
    % e6 c; b2 G9 X3 ?# K
    • # Secure (SSL/TLS) connections
    • Include conf/extra/httpd-ssl.conf
      & X4 S" [5 p: j% {' B  }0 i
    (9) 编辑 conf/extra/httpd-ssl.conf
    " U5 g) m0 x9 ^) ]% n$ ~" w( w2 K把SSLMutex标签的值改为default9 R) ?" ~$ f! a' ]/ z
    检查以下项目对应的文件的目录是否正确& [/ B) [% g0 N" E5 C
    • SSLCertificateFile "D:/web/Apache2.2/conf/server.crt"
    • SSLCertificateKeyFile "D:/web/Apache2.2/conf/server.key"
    • SSLCertificateChainFile "D:/web/Apache2.2/conf/ca.crt"
      2 w: p3 O& ]: {) p) t
    (上述内容需要按照服务安装的实际路径填写,除此之外,配置文件内的所有文件路径都需要确认是否与实际路径相符)- w2 |2 X* Z- ]- n9 k0 T8 [3 E
    成功搭建HTTPS:
    1 j/ t& J( |- t0 w4 f: g6 R0 N0 y3 C+ u$ j$ B
    + k# q4 K) X7 _* F7 R

    ; ?8 f; E# \7 |7 V开发各场景的测试页面HTTP内嵌IFRAME HTTPS
    •    
    •     HTTP iframe HTTPS
    •     这是父页面
    •    

    • " C9 [: q9 [# l
    HTTPS内嵌IFRAME HTTP
    •    
    •     HTTPS iframe HTTP
    •    
    •     这是父页面
    •    
    • $ [2 {9 P- R0 p+ M3 [6 ^/ _; i% o
    内嵌页面
    •    
    •     Inner HTML
    •     这是子页面
    • % q) ~$ f7 L9 C3 B5 J% ^
    IFRAME内嵌统计结果
    HTTP内嵌HTTPSHTTPS内嵌HTTPHTTPS内嵌HTTPSHTTP内嵌HTTP
    Chrome正常(有证书)正常(有证书)正常(有证书)正常
    Firefox正常(有证书)正常(有证书)正常(有证书)正常
    IE 9.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    IE 8.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    IE 7.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    Opera正常(有证书)正常(有证书)正常(有证书)正常
    IE 9.0安全风险警告信息:

    IE 9.0安全风险警告信息:

    : j) Y! N: t: }! ]
    IE 8.0安全风险警告信息:

    IE 8.0安全风险警告信息


    ! B* }3 ~" p1 K: ]/ |IE 7.0安全风险警告信息:

    IE 7.0安全风险警告信息

    ! [+ D6 R- g; W( G3 F
    JS访问测试父页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.display = function() {
    •         alert(“Parent window.display() called.”);
    •     }
    • // ]]>
    • % N# \" @6 c; P
      + i. C1 N1 r% o% i. y. N
    子页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.onload = function() {
    •         window.parent && window.parent.display();
    •     }
    • // ]]>
    • 4 |5 Z; k/ y) G/ D% v

        v, L* w* \# M, P) f
    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 控制台报错信息

    , C: Z. B% M* }. B6 p. \
    IE 8.0 浏览器报错信息:

    IE 8.0 浏览器报错信息

    $ ?$ K: F; T& i* r! P
    IE 7.0 浏览器报错信息:

    IE 7.0 浏览器报错信息


    # H) b4 E" ~3 R' d: |分析通过上面的测试,浏览器对于HTTPS和HTTP之间用iFrame嵌套并没过于限制,但存在编码问题。另一方面,基于安全考虑,浏览器有对HTTPS和HTTP之间的JavaScript调用有较严格的限制。
    + J; f5 \( M) @' [, |& Z* {# e. A* f
    / @- Z# i2 O5 V2 x6 C4 `

    0 H* N6 J! T, C- \* Z- K9 p$ i
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩 转发到微博

    本版积分规则

    关闭

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

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