下沙论坛

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

QQ登录

QQ登录

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

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

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

    [LV.Master]伴坛终老

    跳转到指定楼层
    1
    发表于 2014-3-6 12:16:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
    作者: 阿伦 日期: 2013 年 3 月 21 日分类: HTTP, Javascript标签: HTTP, HTTPS, IFrame, 安全& t! `2 U, y8 `# U) x7 E' B
    目的学习如何搭建HTTPS服务;- y6 {; ~' ~9 u0 O/ {3 Y9 ]; O
    为开发对安全性有较高要求的页面提供指导,避免不必要的安全漏洞;
    - P. i) i4 d+ A步骤1.搭建本地HTTPS;. N+ l6 w' v( [
    2.分别开发所有可能的嵌套场景:
    " K5 V$ R7 V0 L8 J5 O
    • HTTP嵌套HTTPS
    • HTTPS嵌套HTTP
    • HTTPS嵌套HTTPS
    • HTTP嵌套HTTP
      ' q+ w0 q& ?. y- ]+ S
    3.分别在现有主流浏览器的各个版本访问嵌套页面,记录浏览器相关提示及限制;. C9 w% w7 u& _  t  R( \
    操作记录环境系统环境:Windows 7 64bit6 c  A6 f. `2 E7 i3 r( J. k
    服务器:Apache
    + o- M: M) I- \8 u8 G7 V) O数据库:MySQL
    : T9 L/ ?2 ~2 `  I; r* q服务器语言:PHP
    " D$ g+ X8 ?7 v7 o, G搭建本地HTTPS下载windows环境的OpenSSL( http://www.openssl.org/related/binaries.html ,由于本人机器使用的是64位系统,所以下载的是64位OpenSSL)% D- Z- B- |1 S4 m9 f, Z
    在Command中使用一下命令生成搭建HTTPS所需要的证书及相关文件:
    # O9 X% H3 n; P; i3 L, b! \3 R(1) 复制apahce2/conf目录openssl.cnf 文件到bin目录, ]+ X4 M( p, `& ~+ q
    (2) 生成RSA密钥 (private key) 下面两个命令都可以生成密钥:
    ; t% I5 O* ~8 q7 R  R
    • openssl genrsa -des3 -out ca.key
    • openssl genrsa -out ca.key
    • openssl genrsa -out ca.key 10246 [9 k+ X8 i/ w& ^2 M3 q
    (-des3选项可以加密生成的密钥, 但是Win32平台不支持加密密钥?启动Apache时会产生以下错误信息, “SSLPassPhraseDialog builtin is not supported on Win32″(当时不清楚我就加了-des3参数?且出现这个错误时apache启动不报错?查看日志才发现以上错误。))' l+ g, [% S$ A4 R) {
    (3) 产生 CA require cert?按提示填入相应的内容:
    $ }- Q9 R# @5 h4 D
    • openssl req -config openssl.cnf -new -key ca.key -out ca.csr- C  U9 c* {( o) N1 @
    (4) 产生 CA public cert:( R$ s8 t' S$ ?0 Z# k, b
    • openssl x509 -days 3650 -req -signkey ca.key -in ca.csr -out ca.crt
      ( m& R8 B  u, g8 p/ v
    (5) 产生 Server private key:5 a3 U% L% y: n; `: Q+ \. d" U
    • openSSL genrsa -out ssl/server.key 1024; q9 m6 y  J! J' o( K9 n+ ?9 e
    (6) 产生 Server require cert?按提示填入和上边相同的内容:
    / L* l/ e6 B1 j6 h
    • openssl req -config openssl.cnf -new -key server.key -out server.csr
      - [) x- V& [5 ~& m
    (7) 产生 Server public key:
    ( `/ S  g2 A3 V5 F( v
    • openssl ca -config openssl.cnf -days 3650 -cert ca.crt -keyfile ca.key -in server.csr -out server.crt% G  g( `) k" b# [2 r8 i  x$ p
    运行这个命令会出错?I am unable to access the ./demoCA/newcerts directory….$ q5 N/ L3 u2 J, G  T4 b4 _! n
    错误原因是没有手动创建一个CA目录结构6 e; m& r" D4 @) a8 E  g* K% N% b* a
    • └─demoCA
    •     ├─newcerts
    •     ├─index.txt
    •     ├─serial
      # U1 ~5 ]( m) o8 d4 A) f' l
    在demoCA中建立 index.txt 空文件, serial文件 , serial文件 中可输入01?此时再运行以上的命令即可生成server.crt。 将生成的 ca.crt、server.crt 和 server.key 放入apache的 conf 目录中
    ! c, Q! F( z# B. h(8) 编辑apache的配置文件httpd.conf 去掉以下语句的注释, Include conf/extra/httpd-ssl.conf/ m6 t! l. _  O" a: f
    • # Secure (SSL/TLS) connections
    • Include conf/extra/httpd-ssl.conf
      ' Q# s! O6 p; F. ^8 y
    (9) 编辑 conf/extra/httpd-ssl.conf
    / p# o) `0 W0 u' v/ v# g/ c6 j3 G把SSLMutex标签的值改为default
      Q! _7 R8 j1 _) P  t检查以下项目对应的文件的目录是否正确" t. Q' x  P. g: |" H# h
    • SSLCertificateFile "D:/web/Apache2.2/conf/server.crt"
    • SSLCertificateKeyFile "D:/web/Apache2.2/conf/server.key"
    • SSLCertificateChainFile "D:/web/Apache2.2/conf/ca.crt"8 ~7 ^" V' |9 _4 H! e$ G) y
    (上述内容需要按照服务安装的实际路径填写,除此之外,配置文件内的所有文件路径都需要确认是否与实际路径相符)# t$ N: t& q# {3 N6 [
    成功搭建HTTPS:
    5 A6 U3 _: V4 O/ |* B  e$ A; D9 {, L- s/ Z

    3 `! f+ o% g6 ^4 n- ?( M! ^2 D. a3 |4 ^; n( r1 e0 Z2 W4 N5 H/ [7 }. {
    开发各场景的测试页面HTTP内嵌IFRAME HTTPS
    •    
    •     HTTP iframe HTTPS
    •     这是父页面
    •    

    • 1 L& l1 c) Y: N! J
    HTTPS内嵌IFRAME HTTP
    •    
    •     HTTPS iframe HTTP
    •    
    •     这是父页面
    •    

    • & w3 Y. c$ A. y* ?6 K
    内嵌页面
    •    
    •     Inner HTML
    •     这是子页面
    • ) g: Q# J6 t1 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安全风险警告信息:


    ' L$ ]* T  I8 c/ n' N4 e: |% WIE 8.0安全风险警告信息:

    IE 8.0安全风险警告信息

    # U8 v4 e1 c* n7 |
    IE 7.0安全风险警告信息:

    IE 7.0安全风险警告信息


    8 {( J" v/ K+ g% V  QJS访问测试父页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.display = function() {
    •         alert(“Parent window.display() called.”);
    •     }
    • // ]]>
    • 8 l! b, t3 g0 l

      4 N, _, V  c5 v0 U7 _
    子页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.onload = function() {
    •         window.parent && window.parent.display();
    •     }
    • // ]]>
    •   }. u( b7 `9 h- f; ^4 t

      ! d( X3 Q* R* \; 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 控制台报错信息

      Q2 q3 {9 b# |
    IE 8.0 浏览器报错信息:

    IE 8.0 浏览器报错信息

    : W& t3 H; F+ \8 S  b
    IE 7.0 浏览器报错信息:

    IE 7.0 浏览器报错信息

    3 u$ ?+ ?& K% v' ]
    分析通过上面的测试,浏览器对于HTTPS和HTTP之间用iFrame嵌套并没过于限制,但存在编码问题。另一方面,基于安全考虑,浏览器有对HTTPS和HTTP之间的JavaScript调用有较严格的限制。
    : K" ]6 N" ?6 ~! p& j
    ! F: p3 [; V. o- N$ Z# g- f  w
    . |5 j) U- d& J! M/ ~
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩

    本版积分规则

    关闭

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

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