下沙论坛

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

用新浪微博连接

一步搞定

QQ登录

QQ登录

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

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

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

    [LV.Master]伴坛终老

    跳转到指定楼层
    1
    发表于 2014-3-6 12:16:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
    作者: 阿伦 日期: 2013 年 3 月 21 日分类: HTTP, Javascript标签: HTTP, HTTPS, IFrame, 安全" Q* |3 S3 T- J
    目的学习如何搭建HTTPS服务;  P, X' Z4 g* c$ v# F; K
    为开发对安全性有较高要求的页面提供指导,避免不必要的安全漏洞;0 C/ }: e; ]1 f
    步骤1.搭建本地HTTPS;
    ! w& \: z; X- O  T1 R- o0 j2.分别开发所有可能的嵌套场景:
    7 W( F: F, R2 |! K0 Q. Q/ k
    • HTTP嵌套HTTPS
    • HTTPS嵌套HTTP
    • HTTPS嵌套HTTPS
    • HTTP嵌套HTTP
      + _; w+ V; v3 e- z/ a/ f
    3.分别在现有主流浏览器的各个版本访问嵌套页面,记录浏览器相关提示及限制;
    / O& F2 Y2 P( A$ C) B* J操作记录环境系统环境:Windows 7 64bit
    % t' J, ~- V0 ^7 y* i4 H9 w" B服务器:Apache$ e* b0 N# e2 g5 S  P7 B
    数据库:MySQL; E: `/ U3 @( @+ T; g9 ^* i7 l5 X
    服务器语言:PHP
    ( G! f) ]' g& n5 R' O搭建本地HTTPS下载windows环境的OpenSSL( http://www.openssl.org/related/binaries.html ,由于本人机器使用的是64位系统,所以下载的是64位OpenSSL)9 g" j3 N4 w" ^. J8 C1 z1 O
    在Command中使用一下命令生成搭建HTTPS所需要的证书及相关文件:- l" z% E5 _8 _' J! q4 J
    (1) 复制apahce2/conf目录openssl.cnf 文件到bin目录
    - O, }5 V' X( O  U; l/ L/ t' b(2) 生成RSA密钥 (private key) 下面两个命令都可以生成密钥:
    + W1 m* C; W  A% @. Y5 r
    • openssl genrsa -des3 -out ca.key
    • openssl genrsa -out ca.key
    • openssl genrsa -out ca.key 1024
      , V/ \. {# l; F0 |- M" r
    (-des3选项可以加密生成的密钥, 但是Win32平台不支持加密密钥?启动Apache时会产生以下错误信息, “SSLPassPhraseDialog builtin is not supported on Win32″(当时不清楚我就加了-des3参数?且出现这个错误时apache启动不报错?查看日志才发现以上错误。))" m2 P8 n+ ]7 Q, p$ c3 T; Y! Q
    (3) 产生 CA require cert?按提示填入相应的内容:
    # n; B! j/ l; o8 c# Z+ w" z
    • openssl req -config openssl.cnf -new -key ca.key -out ca.csr
        W. a8 Q7 M/ ~+ ^, v* _' A
    (4) 产生 CA public cert:
    5 K. H5 k* q5 r  O
    • openssl x509 -days 3650 -req -signkey ca.key -in ca.csr -out ca.crt
      / D0 y0 b3 d, a, o9 M1 h, z  d+ E
    (5) 产生 Server private key:' q$ S2 X7 @4 E8 K( d7 [- ~
    • openSSL genrsa -out ssl/server.key 10240 p. O0 q2 V+ h( `
    (6) 产生 Server require cert?按提示填入和上边相同的内容:. b6 D% l/ E- x! |$ [
    • openssl req -config openssl.cnf -new -key server.key -out server.csr
      / {5 f3 x1 M+ z7 q* u( x+ v
    (7) 产生 Server public key:
    8 H. w- X! P9 P
    • openssl ca -config openssl.cnf -days 3650 -cert ca.crt -keyfile ca.key -in server.csr -out server.crt  @  M5 u3 v0 r& v- u5 k- P, B
    运行这个命令会出错?I am unable to access the ./demoCA/newcerts directory….
    ; ~- V. h+ R. @4 o" H0 y8 v, A错误原因是没有手动创建一个CA目录结构, K! X5 _4 M0 }& [# s% @+ M
    • └─demoCA
    •     ├─newcerts
    •     ├─index.txt
    •     ├─serial! Z7 ^- L( F. e+ m4 @. {
    在demoCA中建立 index.txt 空文件, serial文件 , serial文件 中可输入01?此时再运行以上的命令即可生成server.crt。 将生成的 ca.crt、server.crt 和 server.key 放入apache的 conf 目录中
      g) a( O4 e9 y! E- Q(8) 编辑apache的配置文件httpd.conf 去掉以下语句的注释, Include conf/extra/httpd-ssl.conf
    # R) l8 u8 \3 ?# ^$ R7 H
    • # Secure (SSL/TLS) connections
    • Include conf/extra/httpd-ssl.conf" {/ i/ c" h1 U: ]3 C$ a% x  [
    (9) 编辑 conf/extra/httpd-ssl.conf/ |( k) _, z, f8 Y; h; X) E3 o
    把SSLMutex标签的值改为default5 u4 N( f/ H! H2 }+ P4 S
    检查以下项目对应的文件的目录是否正确
    * w# Q0 X8 @  q: o. n: j: I! S
    • 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 T1 {' U8 x* E- ~; v2 ^8 g
    (上述内容需要按照服务安装的实际路径填写,除此之外,配置文件内的所有文件路径都需要确认是否与实际路径相符)* N$ o/ b3 s) l% X% e) ^5 T9 I
    成功搭建HTTPS:$ H' I' [6 _& K/ \3 R

    : C  s, H2 d: z6 f% s8 K
    ! `. M2 _: i6 T6 ?7 k/ l4 W
    * Y, A& @! V$ R: H$ G% |' t开发各场景的测试页面HTTP内嵌IFRAME HTTPS
    •    
    •     HTTP iframe HTTPS
    •     这是父页面
    •    
    • 1 u/ e& k7 y/ x+ \5 q0 {+ q
    HTTPS内嵌IFRAME HTTP
    •    
    •     HTTPS iframe HTTP
    •    
    •     这是父页面
    •    

    • : @. R  w4 r; ~# w2 A  o
    内嵌页面
    •    
    •     Inner HTML
    •     这是子页面
    • & K8 z) Y3 X, d4 C; Z  }8 B" t
    IFRAME内嵌统计结果
    HTTP内嵌HTTPSHTTPS内嵌HTTPHTTPS内嵌HTTPSHTTP内嵌HTTP
    Chrome正常(有证书)正常(有证书)正常(有证书)正常
    Firefox正常(有证书)正常(有证书)正常(有证书)正常
    IE 9.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    IE 8.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    IE 7.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    Opera正常(有证书)正常(有证书)正常(有证书)正常
    IE 9.0安全风险警告信息:

    IE 9.0安全风险警告信息:

    ; T( Q3 X3 v2 ~/ v! f* w7 J
    IE 8.0安全风险警告信息:

    IE 8.0安全风险警告信息


    7 f. ?1 R' K' U8 v4 J. E' UIE 7.0安全风险警告信息:

    IE 7.0安全风险警告信息

    " T5 @0 s: M) l0 e3 h' E
    JS访问测试父页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.display = function() {
    •         alert(“Parent window.display() called.”);
    •     }
    • // ]]>
    • - o* q+ Q5 n) _) }2 W& q* Z/ F# r

      ; M* E4 t$ R% \7 q% B3 ]  l8 j) G
    子页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.onload = function() {
    •         window.parent && window.parent.display();
    •     }
    • // ]]>

    • . L0 U% w7 r! Z! ]( Y
      5 b: k/ w' m/ U& H. @  T1 R" _
    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 控制台报错信息


    / b: t3 |* M- C5 jIE 8.0 浏览器报错信息:

    IE 8.0 浏览器报错信息


    - _  A9 a5 ]6 I" DIE 7.0 浏览器报错信息:

    IE 7.0 浏览器报错信息


    / P: x- i3 b/ U+ P8 z7 c分析通过上面的测试,浏览器对于HTTPS和HTTP之间用iFrame嵌套并没过于限制,但存在编码问题。另一方面,基于安全考虑,浏览器有对HTTPS和HTTP之间的JavaScript调用有较严格的限制。) m- i7 U, N1 O6 O' e
    8 j- V7 R3 a. B& y; v

    + F2 C( J; e! P. x6 B: ~
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩 转发到微博

    本版积分规则

    关闭

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

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