下沙论坛

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

QQ登录

QQ登录

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

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

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

    [LV.Master]伴坛终老

    跳转到指定楼层
    1
    发表于 2014-3-6 12:16:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
    作者: 阿伦 日期: 2013 年 3 月 21 日分类: HTTP, Javascript标签: HTTP, HTTPS, IFrame, 安全  H; k* i# }5 P0 b
    目的学习如何搭建HTTPS服务;
    & b. v% r, M) v2 f0 _: V: ]3 `为开发对安全性有较高要求的页面提供指导,避免不必要的安全漏洞;4 f3 b0 C, `/ [; O$ u
    步骤1.搭建本地HTTPS;
    5 P/ e" d+ S2 Z2.分别开发所有可能的嵌套场景:$ Z$ O8 v; C5 @- Y+ `) J0 P- c# N
    • HTTP嵌套HTTPS
    • HTTPS嵌套HTTP
    • HTTPS嵌套HTTPS
    • HTTP嵌套HTTP
      . N- \0 b( D  _) j; }! l1 e. `
    3.分别在现有主流浏览器的各个版本访问嵌套页面,记录浏览器相关提示及限制;
    ; d# O/ @7 l' z  q2 h/ e- ]2 k操作记录环境系统环境:Windows 7 64bit; {& `0 T$ T7 [6 N6 k
    服务器:Apache
    ; K4 T2 z/ @$ {4 H数据库:MySQL
    4 b4 ]$ C1 I- c1 P; P% X服务器语言:PHP
    9 B1 v6 z, c9 G$ a6 F* ?' N搭建本地HTTPS下载windows环境的OpenSSL( http://www.openssl.org/related/binaries.html ,由于本人机器使用的是64位系统,所以下载的是64位OpenSSL)7 I% \7 f3 B, ], Q
    在Command中使用一下命令生成搭建HTTPS所需要的证书及相关文件:3 d* Z# ^. s" ^; u! W( b+ h
    (1) 复制apahce2/conf目录openssl.cnf 文件到bin目录2 \2 p' b% {- i7 v9 x; x' E, ^
    (2) 生成RSA密钥 (private key) 下面两个命令都可以生成密钥:
    * ^+ M) X8 @8 d2 a9 \8 U0 p; d
    • openssl genrsa -des3 -out ca.key
    • openssl genrsa -out ca.key
    • openssl genrsa -out ca.key 1024% t3 P( Q8 x- q( |8 A% z/ q
    (-des3选项可以加密生成的密钥, 但是Win32平台不支持加密密钥?启动Apache时会产生以下错误信息, “SSLPassPhraseDialog builtin is not supported on Win32″(当时不清楚我就加了-des3参数?且出现这个错误时apache启动不报错?查看日志才发现以上错误。))
    9 O) K5 C; r& h' s: F+ A- @(3) 产生 CA require cert?按提示填入相应的内容:! e( Y' M% B0 G5 Z; ~
    • openssl req -config openssl.cnf -new -key ca.key -out ca.csr: i1 J& c* X6 S2 E, C* `2 D
    (4) 产生 CA public cert:" M4 N  A: @" _4 a( f% B
    • openssl x509 -days 3650 -req -signkey ca.key -in ca.csr -out ca.crt
      7 `$ C2 {- {3 _! G
    (5) 产生 Server private key:
    2 {& k- F9 C& s& E6 e0 y. @
    • openSSL genrsa -out ssl/server.key 1024' |% g$ ?9 N2 M/ U, w3 A
    (6) 产生 Server require cert?按提示填入和上边相同的内容:$ x5 {+ ?) \& r8 E1 i! |& P
    • openssl req -config openssl.cnf -new -key server.key -out server.csr) e9 Q! W4 E+ C, V5 U: x
    (7) 产生 Server public key:* N" K( B# r2 A& _! M9 ?
    • openssl ca -config openssl.cnf -days 3650 -cert ca.crt -keyfile ca.key -in server.csr -out server.crt5 G' V6 v/ G  K( o& M
    运行这个命令会出错?I am unable to access the ./demoCA/newcerts directory….) f6 y4 y' W2 ]# n) ~; {
    错误原因是没有手动创建一个CA目录结构
    6 r: \: S5 X7 B0 H
    • └─demoCA
    •     ├─newcerts
    •     ├─index.txt
    •     ├─serial9 }2 I" h+ p( K
    在demoCA中建立 index.txt 空文件, serial文件 , serial文件 中可输入01?此时再运行以上的命令即可生成server.crt。 将生成的 ca.crt、server.crt 和 server.key 放入apache的 conf 目录中; W; i( c' Q- I( u! e
    (8) 编辑apache的配置文件httpd.conf 去掉以下语句的注释, Include conf/extra/httpd-ssl.conf
    - A& g1 W7 U6 A3 Z% ?+ q3 [
    • # Secure (SSL/TLS) connections
    • Include conf/extra/httpd-ssl.conf( |  {# o4 r2 {- w% H% J% _% G- \
    (9) 编辑 conf/extra/httpd-ssl.conf
    6 K2 e6 s' m$ i' O; j* v; S把SSLMutex标签的值改为default
      R1 r3 A7 H6 t& y  H+ K* D检查以下项目对应的文件的目录是否正确
    ( D- y' \5 Y% ~# I. q" s: u: 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"
      ; F: k& K3 a* j) @- f5 G# n: v
    (上述内容需要按照服务安装的实际路径填写,除此之外,配置文件内的所有文件路径都需要确认是否与实际路径相符)
      E- g: }' o1 y4 F2 J/ d3 v成功搭建HTTPS:
    5 k5 ?. m8 B% x5 r: _7 O: M
    , h4 |1 W$ O. t5 C5 x, u
    ' @9 ^: _; i( F3 I. N( C# C! t9 e* B# `' x; w
    开发各场景的测试页面HTTP内嵌IFRAME HTTPS
    •    
    •     HTTP iframe HTTPS
    •     这是父页面
    •    
    • , H1 z+ |. N& o# Y! X
    HTTPS内嵌IFRAME HTTP
    •    
    •     HTTPS iframe HTTP
    •    
    •     这是父页面
    •    
    • ) m" y1 `, d' d* U1 L3 a' S
    内嵌页面
    •    
    •     Inner HTML
    •     这是子页面
    • * V* |5 J* v" }4 x  \" w
    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 T, X8 E6 C+ ]5 J2 Y! ^IE 8.0安全风险警告信息:

    IE 8.0安全风险警告信息


    4 x! O& A  [: N  H- UIE 7.0安全风险警告信息:

    IE 7.0安全风险警告信息


    + Z! q  l( V3 `$ d7 {JS访问测试父页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.display = function() {
    •         alert(“Parent window.display() called.”);
    •     }
    • // ]]>
    • % v8 V; P7 m  L0 H5 @8 L2 S

      $ {# \6 p% |* Z% \9 o
    子页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.onload = function() {
    •         window.parent && window.parent.display();
    •     }
    • // ]]>
    • 6 z0 s% T- z) o- v1 J# v, h1 a

      4 {8 s. Y+ J4 @) R& ^+ V2 W% P2 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 控制台报错信息


    ) z" x# a; G8 x# _IE 8.0 浏览器报错信息:

    IE 8.0 浏览器报错信息

    1 z. W1 L' Q  M5 M; b, B
    IE 7.0 浏览器报错信息:

    IE 7.0 浏览器报错信息

    ( F; K: W$ G6 D, `' E2 ~
    分析通过上面的测试,浏览器对于HTTPS和HTTP之间用iFrame嵌套并没过于限制,但存在编码问题。另一方面,基于安全考虑,浏览器有对HTTPS和HTTP之间的JavaScript调用有较严格的限制。
    0 r7 U4 p$ I0 R, M% z

    " I5 B. M& J. X. ~" l$ i0 h* z' i) w& m% P4 S0 \; p/ S2 K
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩

    本版积分规则

    关闭

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

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