下沙论坛

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

QQ登录

QQ登录

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

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

[复制链接]
  • TA的每日心情
    奋斗
    前天 11:21
  • 签到天数: 2393 天

    [LV.Master]伴坛终老

    跳转到指定楼层
    1
    发表于 2014-3-6 12:16:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
    作者: 阿伦 日期: 2013 年 3 月 21 日分类: HTTP, Javascript标签: HTTP, HTTPS, IFrame, 安全* a5 Z7 |  u$ \; c% p( |9 H3 @$ p
    目的学习如何搭建HTTPS服务;4 C; o0 R  B2 w
    为开发对安全性有较高要求的页面提供指导,避免不必要的安全漏洞;# ~  d) O; f9 ?6 U$ ~
    步骤1.搭建本地HTTPS;
    % Z! O  ]/ o- D2.分别开发所有可能的嵌套场景:$ r3 R0 P8 J/ ~
    • HTTP嵌套HTTPS
    • HTTPS嵌套HTTP
    • HTTPS嵌套HTTPS
    • HTTP嵌套HTTP/ [& h$ e- p: |0 O
    3.分别在现有主流浏览器的各个版本访问嵌套页面,记录浏览器相关提示及限制;4 ^+ t/ R) P8 \
    操作记录环境系统环境:Windows 7 64bit
    5 F7 e9 j; l/ e  i服务器:Apache: n) V5 b6 A, [9 `
    数据库:MySQL4 V+ Y9 s) N" S) _3 S( g- j
    服务器语言:PHP
    4 j) P* T" e9 C8 m5 N' o搭建本地HTTPS下载windows环境的OpenSSL( http://www.openssl.org/related/binaries.html ,由于本人机器使用的是64位系统,所以下载的是64位OpenSSL)- c5 H: g5 B- Y2 T- ~# X! j
    在Command中使用一下命令生成搭建HTTPS所需要的证书及相关文件:
    , A& ^/ s: L7 n2 v(1) 复制apahce2/conf目录openssl.cnf 文件到bin目录
    3 i5 d' [# c; e5 V7 F1 [(2) 生成RSA密钥 (private key) 下面两个命令都可以生成密钥:
    , o- q9 I( h0 H  E$ A
    • openssl genrsa -des3 -out ca.key
    • openssl genrsa -out ca.key
    • openssl genrsa -out ca.key 1024$ L1 \6 |6 D, u3 X
    (-des3选项可以加密生成的密钥, 但是Win32平台不支持加密密钥?启动Apache时会产生以下错误信息, “SSLPassPhraseDialog builtin is not supported on Win32″(当时不清楚我就加了-des3参数?且出现这个错误时apache启动不报错?查看日志才发现以上错误。))  j9 u% j9 x4 G5 ]& q6 `. w/ i( N( h
    (3) 产生 CA require cert?按提示填入相应的内容:
    ' q# Z% n" o: f& R6 M7 C) g
    • openssl req -config openssl.cnf -new -key ca.key -out ca.csr
      ! m: t  _  d% L0 l% u
    (4) 产生 CA public cert:
    + Z$ ?8 H, V! \
    • openssl x509 -days 3650 -req -signkey ca.key -in ca.csr -out ca.crt
      5 B- X' O; F, ]( w' P
    (5) 产生 Server private key:1 `" a4 T3 p, p! N: ?
    • openSSL genrsa -out ssl/server.key 1024
      8 J( i# @2 \& P' q
    (6) 产生 Server require cert?按提示填入和上边相同的内容:8 V+ s/ `/ x$ R
    • openssl req -config openssl.cnf -new -key server.key -out server.csr
      6 {6 l. ^% m: E2 ]
    (7) 产生 Server public key:) m8 |9 Y' J' q- V; y# h. w: j/ y, U
    • openssl ca -config openssl.cnf -days 3650 -cert ca.crt -keyfile ca.key -in server.csr -out server.crt. y+ F3 F* k9 g. O9 }" N
    运行这个命令会出错?I am unable to access the ./demoCA/newcerts directory….
    ) q& D8 m. H( R6 _! A6 L错误原因是没有手动创建一个CA目录结构
    ! y/ v0 d( n* x8 y& X" |# n- {* Y1 @; e
    • └─demoCA
    •     ├─newcerts
    •     ├─index.txt
    •     ├─serial! Q( _2 K1 w/ G0 g2 s; j& g' e0 L
    在demoCA中建立 index.txt 空文件, serial文件 , serial文件 中可输入01?此时再运行以上的命令即可生成server.crt。 将生成的 ca.crt、server.crt 和 server.key 放入apache的 conf 目录中
    , u( j) H8 X1 s$ |- D(8) 编辑apache的配置文件httpd.conf 去掉以下语句的注释, Include conf/extra/httpd-ssl.conf5 o1 v5 S9 }3 q* M. b( f, P+ K! N* D
    • # Secure (SSL/TLS) connections
    • Include conf/extra/httpd-ssl.conf, Y  X' r9 H! M5 I9 m+ x8 [9 ^' s
    (9) 编辑 conf/extra/httpd-ssl.conf
    # A2 W8 }& t, s7 o8 w1 Q4 c把SSLMutex标签的值改为default
    & g# ]& y. b! @0 }. s3 |检查以下项目对应的文件的目录是否正确
    8 u. m- ^/ d% x/ N( Y
    • SSLCertificateFile "D:/web/Apache2.2/conf/server.crt"
    • SSLCertificateKeyFile "D:/web/Apache2.2/conf/server.key"
    • SSLCertificateChainFile "D:/web/Apache2.2/conf/ca.crt"
      / J9 `2 Z8 O$ F& o* A4 H
    (上述内容需要按照服务安装的实际路径填写,除此之外,配置文件内的所有文件路径都需要确认是否与实际路径相符)& C$ _3 w, N$ k. _) }6 X
    成功搭建HTTPS:
    ( h% q& L( X! r) K! Q4 n7 H! [. u- R( T6 [  R' j
    ! ~# m8 E( n) `; o2 a9 D

    * l; F0 b' t; D+ ~开发各场景的测试页面HTTP内嵌IFRAME HTTPS
    •    
    •     HTTP iframe HTTPS
    •     这是父页面
    •    
    • 4 }7 {3 L+ c) o8 ~, z
    HTTPS内嵌IFRAME HTTP
    •    
    •     HTTPS iframe HTTP
    •    
    •     这是父页面
    •    
    • 5 v' ]: {; V$ R. O4 O
    内嵌页面
    •    
    •     Inner HTML
    •     这是子页面
    • . `. {4 |1 {9 @$ I; z- E
    IFRAME内嵌统计结果
    HTTP内嵌HTTPSHTTPS内嵌HTTPHTTPS内嵌HTTPSHTTP内嵌HTTP
    Chrome正常(有证书)正常(有证书)正常(有证书)正常
    Firefox正常(有证书)正常(有证书)正常(有证书)正常
    IE 9.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    IE 8.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    IE 7.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    Opera正常(有证书)正常(有证书)正常(有证书)正常
    IE 9.0安全风险警告信息:

    IE 9.0安全风险警告信息:

    7 ]) N! a4 @% X) X' C: {) x" T& i
    IE 8.0安全风险警告信息:

    IE 8.0安全风险警告信息

    ' z* s# ^; @5 K( B; O) ]4 L1 Y' D
    IE 7.0安全风险警告信息:

    IE 7.0安全风险警告信息

    ( F& s: E. G( Q. l+ K3 p2 t: l& K
    JS访问测试父页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.display = function() {
    •         alert(“Parent window.display() called.”);
    •     }
    • // ]]>
    • & @, Q) V4 L. t! A- F# V
      2 o+ x6 q. w1 O- I
    子页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.onload = function() {
    •         window.parent && window.parent.display();
    •     }
    • // ]]>

    • 3 S  H- t$ f$ O7 r8 e# m
      5 ]  d* H! l0 M9 H. n! E- c' e
    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 控制台报错信息


    3 U2 q4 s4 k, U3 f/ _& G7 M" u0 \IE 8.0 浏览器报错信息:

    IE 8.0 浏览器报错信息


    1 W: h' f  e' M1 _+ FIE 7.0 浏览器报错信息:

    IE 7.0 浏览器报错信息


    ' y" C+ e: D( K4 t分析通过上面的测试,浏览器对于HTTPS和HTTP之间用iFrame嵌套并没过于限制,但存在编码问题。另一方面,基于安全考虑,浏览器有对HTTPS和HTTP之间的JavaScript调用有较严格的限制。
    4 h( ?' _4 H9 ]; M+ v. l3 d; Q
    ; X* w9 {$ f' w, f9 s

    ) L' f* k. E# r3 _+ {
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩

    本版积分规则

    关闭

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

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