下沙论坛

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

QQ登录

QQ登录

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

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

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

    [LV.Master]伴坛终老

    跳转到指定楼层
    1
    发表于 2014-3-6 12:16:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
    作者: 阿伦 日期: 2013 年 3 月 21 日分类: HTTP, Javascript标签: HTTP, HTTPS, IFrame, 安全
    ! C1 ^% Y; n5 _; D, N5 R, G目的学习如何搭建HTTPS服务;
    ! P2 L& f9 c3 Y6 I, x3 P( K为开发对安全性有较高要求的页面提供指导,避免不必要的安全漏洞;
    / h- t$ q0 ^5 d+ q2 `9 {6 l- Z' L# _步骤1.搭建本地HTTPS;3 c& H; Z* i5 h% ?
    2.分别开发所有可能的嵌套场景:+ e9 X+ H# Q+ |3 h# o5 q
    • HTTP嵌套HTTPS
    • HTTPS嵌套HTTP
    • HTTPS嵌套HTTPS
    • HTTP嵌套HTTP
      2 g" ^" ?: h3 C: K3 b# x3 O. N; L
    3.分别在现有主流浏览器的各个版本访问嵌套页面,记录浏览器相关提示及限制;
    * d! n' n8 ~* _. f. l' |操作记录环境系统环境:Windows 7 64bit7 `& W0 L' a+ W
    服务器:Apache9 S0 O' r2 \# f4 Q5 l
    数据库:MySQL
    3 d- A7 ^4 N2 |3 V& v: \) [% j" a) q服务器语言:PHP. O' w2 b) }- _/ P6 }2 V- K( U+ `
    搭建本地HTTPS下载windows环境的OpenSSL( http://www.openssl.org/related/binaries.html ,由于本人机器使用的是64位系统,所以下载的是64位OpenSSL)
    : H% f6 l$ u& }1 `7 F1 x在Command中使用一下命令生成搭建HTTPS所需要的证书及相关文件:: C$ K! X) i1 g" t
    (1) 复制apahce2/conf目录openssl.cnf 文件到bin目录
    % s6 S3 I) B( y0 f6 w0 A(2) 生成RSA密钥 (private key) 下面两个命令都可以生成密钥:  R8 S. t/ \% |
    • openssl genrsa -des3 -out ca.key
    • openssl genrsa -out ca.key
    • openssl genrsa -out ca.key 1024
      . K6 f- t; ]& ^# f7 Y( n
    (-des3选项可以加密生成的密钥, 但是Win32平台不支持加密密钥?启动Apache时会产生以下错误信息, “SSLPassPhraseDialog builtin is not supported on Win32″(当时不清楚我就加了-des3参数?且出现这个错误时apache启动不报错?查看日志才发现以上错误。))
    * s, ^0 A+ n' e% S  n8 Y(3) 产生 CA require cert?按提示填入相应的内容:
    1 e& S! _5 v  a% a
    • openssl req -config openssl.cnf -new -key ca.key -out ca.csr! S8 ^: `: r! a% Y( ]  J
    (4) 产生 CA public cert:" _6 Y8 g4 H% a1 ^
    • openssl x509 -days 3650 -req -signkey ca.key -in ca.csr -out ca.crt! u) Y6 g' P# z9 t0 m, ~4 X9 @
    (5) 产生 Server private key:
      ^/ b) L- f* z0 A  t  q! D) N
    • openSSL genrsa -out ssl/server.key 1024
      5 Q4 |' P0 H' x
    (6) 产生 Server require cert?按提示填入和上边相同的内容:
    ; K; X( X: q1 J
    • openssl req -config openssl.cnf -new -key server.key -out server.csr- q( D6 G" i9 \# {6 ]$ c
    (7) 产生 Server public key:9 Y; v6 U) i: e) d% |. E! u
    • openssl ca -config openssl.cnf -days 3650 -cert ca.crt -keyfile ca.key -in server.csr -out server.crt
      ( ]5 K8 ?( Z7 y" @; d
    运行这个命令会出错?I am unable to access the ./demoCA/newcerts directory….. ]1 C1 Y; _: w: j' W
    错误原因是没有手动创建一个CA目录结构! \% G4 F6 g2 @9 @7 ?3 Y
    • └─demoCA
    •     ├─newcerts
    •     ├─index.txt
    •     ├─serial5 O% w1 e- m2 z( _
    在demoCA中建立 index.txt 空文件, serial文件 , serial文件 中可输入01?此时再运行以上的命令即可生成server.crt。 将生成的 ca.crt、server.crt 和 server.key 放入apache的 conf 目录中( _1 I* y9 J) o* ~6 i: M
    (8) 编辑apache的配置文件httpd.conf 去掉以下语句的注释, Include conf/extra/httpd-ssl.conf' P4 g/ ]2 D" F4 k& X* K& e
    • # Secure (SSL/TLS) connections
    • Include conf/extra/httpd-ssl.conf
      4 H/ Q+ f5 Y' N0 E$ X% V; `
    (9) 编辑 conf/extra/httpd-ssl.conf
    2 W6 p8 e" [; s! J把SSLMutex标签的值改为default
    5 L' O9 R3 V. w1 C: o检查以下项目对应的文件的目录是否正确$ F6 v( e8 C/ u) a4 x
    • SSLCertificateFile "D:/web/Apache2.2/conf/server.crt"
    • SSLCertificateKeyFile "D:/web/Apache2.2/conf/server.key"
    • SSLCertificateChainFile "D:/web/Apache2.2/conf/ca.crt"! h- s) ^* U$ Q0 }
    (上述内容需要按照服务安装的实际路径填写,除此之外,配置文件内的所有文件路径都需要确认是否与实际路径相符)1 L4 x) n4 a7 O' j9 S6 M0 x
    成功搭建HTTPS:/ t; ?1 n( j0 O, E) G

    $ @  b! _4 j2 Y. n! s7 f+ \
    ( l2 G" R3 W# J( P0 u5 |! @" G- I4 D
    开发各场景的测试页面HTTP内嵌IFRAME HTTPS
    •    
    •     HTTP iframe HTTPS
    •     这是父页面
    •    

    • 3 e2 h: I9 C. I$ O# \( ^
    HTTPS内嵌IFRAME HTTP
    •    
    •     HTTPS iframe HTTP
    •    
    •     这是父页面
    •    

    • ( L/ r, h! u4 E" n6 D2 {
    内嵌页面
    •    
    •     Inner HTML
    •     这是子页面

    • & M( I* c: B2 g" {- y
    IFRAME内嵌统计结果
    HTTP内嵌HTTPSHTTPS内嵌HTTPHTTPS内嵌HTTPSHTTP内嵌HTTP
    Chrome正常(有证书)正常(有证书)正常(有证书)正常
    Firefox正常(有证书)正常(有证书)正常(有证书)正常
    IE 9.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    IE 8.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    IE 7.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    Opera正常(有证书)正常(有证书)正常(有证书)正常
    IE 9.0安全风险警告信息:

    IE 9.0安全风险警告信息:


    + U3 _0 q  b% O% }1 L+ ~/ l/ \IE 8.0安全风险警告信息:

    IE 8.0安全风险警告信息

    ; G/ @) {% y0 B# U2 o! d' H6 J
    IE 7.0安全风险警告信息:

    IE 7.0安全风险警告信息

    ' U5 ^6 j% [9 f& M) K3 P! m
    JS访问测试父页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.display = function() {
    •         alert(“Parent window.display() called.”);
    •     }
    • // ]]>

    • + L/ I' A& S3 G. R

      - i/ f; S$ W! W8 o
    子页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.onload = function() {
    •         window.parent && window.parent.display();
    •     }
    • // ]]>

    • $ ^3 w. H1 @0 P# Y. s
      $ ~9 N# q1 f$ v9 [
    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 控制台报错信息

    . t3 B6 F% ?6 c' l8 |) R7 u
    IE 8.0 浏览器报错信息:

    IE 8.0 浏览器报错信息

    # K; x3 E$ P# B6 v: A; s
    IE 7.0 浏览器报错信息:

    IE 7.0 浏览器报错信息


    6 a: H  O, I( c: ^分析通过上面的测试,浏览器对于HTTPS和HTTP之间用iFrame嵌套并没过于限制,但存在编码问题。另一方面,基于安全考虑,浏览器有对HTTPS和HTTP之间的JavaScript调用有较严格的限制。# Q2 z# u; \5 x4 I

    $ @  _0 \  M0 R* v# V9 M* f. b) Q5 q0 A) t$ N9 |- e0 l' p
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩

    本版积分规则

    关闭

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

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