下沙论坛

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

用新浪微博连接

一步搞定

QQ登录

QQ登录

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

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

[复制链接]
  • TA的每日心情
    奋斗
    前天 10:28
  • 签到天数: 2370 天

    [LV.Master]伴坛终老

    跳转到指定楼层
    1
    发表于 2014-3-6 12:16:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
    作者: 阿伦 日期: 2013 年 3 月 21 日分类: HTTP, Javascript标签: HTTP, HTTPS, IFrame, 安全9 b$ R& N7 d3 @' W( Z! }, N
    目的学习如何搭建HTTPS服务;( F- J: \1 g2 S9 T) j5 q3 J0 P" H$ I
    为开发对安全性有较高要求的页面提供指导,避免不必要的安全漏洞;4 M* K% R/ J- d" b5 H( H8 O, m: y
    步骤1.搭建本地HTTPS;
    6 L- s8 Y$ L( h+ E- R3 ^6 d2.分别开发所有可能的嵌套场景:
    8 c; {* g2 R6 M# m9 z. ^6 ^
    • HTTP嵌套HTTPS
    • HTTPS嵌套HTTP
    • HTTPS嵌套HTTPS
    • HTTP嵌套HTTP; n/ G" I2 D/ t
    3.分别在现有主流浏览器的各个版本访问嵌套页面,记录浏览器相关提示及限制;% E5 S( K2 k( W1 J' P& |
    操作记录环境系统环境:Windows 7 64bit7 m" |0 o. F1 O2 {
    服务器:Apache
    ; u) w  w) ~" X+ }5 `# M5 i! M. P数据库:MySQL
    - i- O% H$ x4 z# l3 A服务器语言:PHP, c  e+ o/ f/ R: g) M: @
    搭建本地HTTPS下载windows环境的OpenSSL( http://www.openssl.org/related/binaries.html ,由于本人机器使用的是64位系统,所以下载的是64位OpenSSL)
    % b* H+ A4 d8 o在Command中使用一下命令生成搭建HTTPS所需要的证书及相关文件:
    * t& P3 f+ y8 S% w8 k(1) 复制apahce2/conf目录openssl.cnf 文件到bin目录: O7 s' K) w" w) z: ~5 y: e
    (2) 生成RSA密钥 (private key) 下面两个命令都可以生成密钥:, x  W8 A5 E3 L0 Y% U& |; u/ T
    • openssl genrsa -des3 -out ca.key
    • openssl genrsa -out ca.key
    • openssl genrsa -out ca.key 1024
      " L# H9 m; L1 c' A
    (-des3选项可以加密生成的密钥, 但是Win32平台不支持加密密钥?启动Apache时会产生以下错误信息, “SSLPassPhraseDialog builtin is not supported on Win32″(当时不清楚我就加了-des3参数?且出现这个错误时apache启动不报错?查看日志才发现以上错误。)): M0 @/ R+ J: h6 ?3 u3 R
    (3) 产生 CA require cert?按提示填入相应的内容:
    ' c4 E3 a" ^! n5 z6 }. J# a8 {
    • openssl req -config openssl.cnf -new -key ca.key -out ca.csr
      ) F$ w5 w% I$ r( x
    (4) 产生 CA public cert:/ {2 H+ B/ X$ f( p% R
    • openssl x509 -days 3650 -req -signkey ca.key -in ca.csr -out ca.crt: ]7 M, o1 o# `0 K
    (5) 产生 Server private key:
    1 {& m- t8 Z0 F6 K
    • openSSL genrsa -out ssl/server.key 1024) t) ~0 Y4 Q  Z2 m
    (6) 产生 Server require cert?按提示填入和上边相同的内容:2 G( y' e0 l7 p* K
    • openssl req -config openssl.cnf -new -key server.key -out server.csr
      " b0 j: \% c1 K( l
    (7) 产生 Server public key:& x9 @5 P# a8 `/ \: L
    • openssl ca -config openssl.cnf -days 3650 -cert ca.crt -keyfile ca.key -in server.csr -out server.crt, i7 s) [# O3 H* v6 C! T
    运行这个命令会出错?I am unable to access the ./demoCA/newcerts directory….' Z$ C7 \9 D* K3 h5 j: z
    错误原因是没有手动创建一个CA目录结构' h, b7 s; D1 A1 K; h  N$ K
    • └─demoCA
    •     ├─newcerts
    •     ├─index.txt
    •     ├─serial
      3 F8 S# V' o- E
    在demoCA中建立 index.txt 空文件, serial文件 , serial文件 中可输入01?此时再运行以上的命令即可生成server.crt。 将生成的 ca.crt、server.crt 和 server.key 放入apache的 conf 目录中
    + U  \1 ]8 k1 X3 Y; f9 @# i(8) 编辑apache的配置文件httpd.conf 去掉以下语句的注释, Include conf/extra/httpd-ssl.conf
    # I" ^7 l7 Y; E- F1 J6 o1 e
    • # Secure (SSL/TLS) connections
    • Include conf/extra/httpd-ssl.conf* e9 ?) a6 i" v+ d; P3 Z# P
    (9) 编辑 conf/extra/httpd-ssl.conf/ L! B6 P( a' m; z4 j+ T- ?
    把SSLMutex标签的值改为default
    2 _) P% }+ r! v/ w. \" y检查以下项目对应的文件的目录是否正确9 r. t9 \* p. j
    • SSLCertificateFile "D:/web/Apache2.2/conf/server.crt"
    • SSLCertificateKeyFile "D:/web/Apache2.2/conf/server.key"
    • SSLCertificateChainFile "D:/web/Apache2.2/conf/ca.crt": e1 n& y% u3 x1 l# Z
    (上述内容需要按照服务安装的实际路径填写,除此之外,配置文件内的所有文件路径都需要确认是否与实际路径相符)
    0 r% f7 E5 Q7 }5 S6 s( N& H- e$ U成功搭建HTTPS:/ s& a- Z+ m3 Z" r' n: j; J, W; ^) P
    . T8 Y- d' \8 B1 p4 }8 T& @% h3 r8 E
    " W8 X! i0 E* U) C- e# \0 p
    & v+ F- Z& g3 p% o* [) e4 D
    开发各场景的测试页面HTTP内嵌IFRAME HTTPS
    •    
    •     HTTP iframe HTTPS
    •     这是父页面
    •    
    • 8 i( J; r& U/ l+ ?8 e# p
    HTTPS内嵌IFRAME HTTP
    •    
    •     HTTPS iframe HTTP
    •    
    •     这是父页面
    •    

    • , Q- P: i3 g& ~( d! E; W) [+ A
    内嵌页面
    •    
    •     Inner HTML
    •     这是子页面
    • % G4 K5 V. h  e  S
    IFRAME内嵌统计结果
    HTTP内嵌HTTPSHTTPS内嵌HTTPHTTPS内嵌HTTPSHTTP内嵌HTTP
    Chrome正常(有证书)正常(有证书)正常(有证书)正常
    Firefox正常(有证书)正常(有证书)正常(有证书)正常
    IE 9.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    IE 8.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    IE 7.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    Opera正常(有证书)正常(有证书)正常(有证书)正常
    IE 9.0安全风险警告信息:

    IE 9.0安全风险警告信息:


    3 |: @/ W) |- `: KIE 8.0安全风险警告信息:

    IE 8.0安全风险警告信息


    : f5 I) Q3 e% }. yIE 7.0安全风险警告信息:

    IE 7.0安全风险警告信息


    $ t  y+ u1 ~# q* A) d5 eJS访问测试父页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.display = function() {
    •         alert(“Parent window.display() called.”);
    •     }
    • // ]]>

    • . h# T3 _) o- e* e9 E. W. y5 }

        E, `" \! x( T
    子页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.onload = function() {
    •         window.parent && window.parent.display();
    •     }
    • // ]]>

    • 1 T: |6 N# A) z' N# U
      " Y- s. u+ ]4 n3 Y* V& W8 i! n
    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 控制台报错信息

    - H( z6 e6 N3 S  K6 _
    IE 8.0 浏览器报错信息:

    IE 8.0 浏览器报错信息

    + j/ D1 I0 b* o: V) T
    IE 7.0 浏览器报错信息:

    IE 7.0 浏览器报错信息

    & y7 S" w% r* V  n& P- Z
    分析通过上面的测试,浏览器对于HTTPS和HTTP之间用iFrame嵌套并没过于限制,但存在编码问题。另一方面,基于安全考虑,浏览器有对HTTPS和HTTP之间的JavaScript调用有较严格的限制。4 ^1 C( X+ P: R% p) E

    2 v, r/ y; H+ m# I$ f) Y; [
    & A: N9 K0 ], e2 y0 K) C+ t
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩 转发到微博

    本版积分规则

    关闭

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

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