下沙论坛

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

QQ登录

QQ登录

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

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

[复制链接]
  • TA的每日心情
    擦汗
    2025-1-24 09:05
  • 签到天数: 2402 天

    [LV.Master]伴坛终老

    跳转到指定楼层
    1
    发表于 2014-3-6 12:16:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
    作者: 阿伦 日期: 2013 年 3 月 21 日分类: HTTP, Javascript标签: HTTP, HTTPS, IFrame, 安全' C' r! n: s& y' `8 `  G" |
    目的学习如何搭建HTTPS服务;
      O  h0 D, W$ B) w3 B1 O为开发对安全性有较高要求的页面提供指导,避免不必要的安全漏洞;
    9 N) m! g/ G/ l; J; ^- t; t% u步骤1.搭建本地HTTPS;
    1 x- ^6 r! [3 q6 E. r& @. L) W2.分别开发所有可能的嵌套场景:! s: f- z9 f1 r5 ]: V& P
    • HTTP嵌套HTTPS
    • HTTPS嵌套HTTP
    • HTTPS嵌套HTTPS
    • HTTP嵌套HTTP. i+ C5 g6 x1 z, b' L/ ^
    3.分别在现有主流浏览器的各个版本访问嵌套页面,记录浏览器相关提示及限制;' ~3 k' j. Z9 B6 m; _7 L  F" \
    操作记录环境系统环境:Windows 7 64bit, a9 r) [' x. z
    服务器:Apache
    ; p9 T  |, C8 k) }/ _, f3 r3 _数据库:MySQL/ Z% v; Z  O+ S5 K2 A$ D' |
    服务器语言:PHP5 a, I4 [# k& P2 X4 Z+ G1 ~
    搭建本地HTTPS下载windows环境的OpenSSL( http://www.openssl.org/related/binaries.html ,由于本人机器使用的是64位系统,所以下载的是64位OpenSSL)
    1 \; I6 R- S1 C4 [& ^) [/ `在Command中使用一下命令生成搭建HTTPS所需要的证书及相关文件:
    $ R: k+ O: g! |# a(1) 复制apahce2/conf目录openssl.cnf 文件到bin目录8 M" r) D6 N' w' F
    (2) 生成RSA密钥 (private key) 下面两个命令都可以生成密钥:
    & O7 p* P' J& M
    • openssl genrsa -des3 -out ca.key
    • openssl genrsa -out ca.key
    • openssl genrsa -out ca.key 1024, B9 r0 U% {7 {* a" Q* L% E
    (-des3选项可以加密生成的密钥, 但是Win32平台不支持加密密钥?启动Apache时会产生以下错误信息, “SSLPassPhraseDialog builtin is not supported on Win32″(当时不清楚我就加了-des3参数?且出现这个错误时apache启动不报错?查看日志才发现以上错误。))$ o; h8 N8 p5 n
    (3) 产生 CA require cert?按提示填入相应的内容:) L: P  U6 H# E* a
    • openssl req -config openssl.cnf -new -key ca.key -out ca.csr
      4 O; v2 S; x5 E$ M6 `: X
    (4) 产生 CA public cert:) X* l: t) {/ j) F* m
    • openssl x509 -days 3650 -req -signkey ca.key -in ca.csr -out ca.crt+ a9 a- S8 g/ Q5 e- P% N
    (5) 产生 Server private key:& r7 o4 I# Q8 t# U1 G: G
    • openSSL genrsa -out ssl/server.key 1024  o' }( s7 h7 P) v  |
    (6) 产生 Server require cert?按提示填入和上边相同的内容:
    $ B5 ]  r) b/ A
    • openssl req -config openssl.cnf -new -key server.key -out server.csr
      2 s9 j# D7 b- I: {% m% D
    (7) 产生 Server public key:
    / m. `. H% e7 q( u, |& g2 |
    • openssl ca -config openssl.cnf -days 3650 -cert ca.crt -keyfile ca.key -in server.csr -out server.crt
      ! L3 Z: j& k2 s
    运行这个命令会出错?I am unable to access the ./demoCA/newcerts directory….& v" w+ D4 K! ^$ x  x  t3 T
    错误原因是没有手动创建一个CA目录结构
    ) E  b  K" b$ u
    • └─demoCA
    •     ├─newcerts
    •     ├─index.txt
    •     ├─serial
      - ^6 V: n9 B1 L) t- b3 x% A; B. B
    在demoCA中建立 index.txt 空文件, serial文件 , serial文件 中可输入01?此时再运行以上的命令即可生成server.crt。 将生成的 ca.crt、server.crt 和 server.key 放入apache的 conf 目录中
    & i/ }( w# H* z: D9 d(8) 编辑apache的配置文件httpd.conf 去掉以下语句的注释, Include conf/extra/httpd-ssl.conf3 A" c, b0 Y! `$ [8 ]
    • # Secure (SSL/TLS) connections
    • Include conf/extra/httpd-ssl.conf  c1 V  `* O1 v- u+ M( r
    (9) 编辑 conf/extra/httpd-ssl.conf2 z1 P/ x. v& K
    把SSLMutex标签的值改为default3 E! n$ j# F/ Z. F% e
    检查以下项目对应的文件的目录是否正确5 f$ b$ j4 t/ g
    • SSLCertificateFile "D:/web/Apache2.2/conf/server.crt"
    • SSLCertificateKeyFile "D:/web/Apache2.2/conf/server.key"
    • SSLCertificateChainFile "D:/web/Apache2.2/conf/ca.crt"
      1 M3 h, |8 @. M/ r/ U9 ^
    (上述内容需要按照服务安装的实际路径填写,除此之外,配置文件内的所有文件路径都需要确认是否与实际路径相符)
    + T! r+ ~  h9 ^3 x" P成功搭建HTTPS:
    : u! N& @/ R* K0 s
    , n( `9 W" L, W* E& _$ u  X# a; L& a
    / s' C. e) I1 X- D! b1 A
    开发各场景的测试页面HTTP内嵌IFRAME HTTPS
    •    
    •     HTTP iframe HTTPS
    •     这是父页面
    •    

    • 3 a- p0 F8 Z9 U6 ?
    HTTPS内嵌IFRAME HTTP
    •    
    •     HTTPS iframe HTTP
    •    
    •     这是父页面
    •    

    • % q' @2 W7 ?% k" C0 m2 h& R0 m
    内嵌页面
    •    
    •     Inner HTML
    •     这是子页面
    • ; _5 g& n, h5 b8 m
    IFRAME内嵌统计结果
    HTTP内嵌HTTPSHTTPS内嵌HTTPHTTPS内嵌HTTPSHTTP内嵌HTTP
    Chrome正常(有证书)正常(有证书)正常(有证书)正常
    Firefox正常(有证书)正常(有证书)正常(有证书)正常
    IE 9.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    IE 8.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    IE 7.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    Opera正常(有证书)正常(有证书)正常(有证书)正常
    IE 9.0安全风险警告信息:

    IE 9.0安全风险警告信息:

    / {* G% [8 _6 H
    IE 8.0安全风险警告信息:

    IE 8.0安全风险警告信息


      m# e' O; J0 x( E& O  ZIE 7.0安全风险警告信息:

    IE 7.0安全风险警告信息

    6 V; j7 i* h$ C: _- M1 w
    JS访问测试父页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.display = function() {
    •         alert(“Parent window.display() called.”);
    •     }
    • // ]]>

    • 1 {) S. d: e* O

      ' T; ~- [, d2 q: e
    子页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.onload = function() {
    •         window.parent && window.parent.display();
    •     }
    • // ]]>
    • 5 K5 R2 z: p9 f% Q) q6 E3 A4 Z$ e
      0 ]0 ~; B. ^. _
    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 控制台报错信息


    2 ]4 }  c3 e) o/ m5 l# fIE 8.0 浏览器报错信息:

    IE 8.0 浏览器报错信息

    & ]: _: s) L" m7 y
    IE 7.0 浏览器报错信息:

    IE 7.0 浏览器报错信息

    # E1 p% G6 S8 F  v
    分析通过上面的测试,浏览器对于HTTPS和HTTP之间用iFrame嵌套并没过于限制,但存在编码问题。另一方面,基于安全考虑,浏览器有对HTTPS和HTTP之间的JavaScript调用有较严格的限制。  ]6 ?. }0 k) \3 M( Q0 o; U1 E, j

    & X  D. B8 b0 u6 q8 [0 d6 k
      j0 w/ W% u; V) T2 T
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩

    本版积分规则

    关闭

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

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