下沙论坛

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

用新浪微博连接

一步搞定

QQ登录

QQ登录

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

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

[复制链接]
  • TA的每日心情
    奋斗
    昨天 10:28
  • 签到天数: 2370 天

    [LV.Master]伴坛终老

    跳转到指定楼层
    1
    发表于 2014-3-6 12:16:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
    作者: 阿伦 日期: 2013 年 3 月 21 日分类: HTTP, Javascript标签: HTTP, HTTPS, IFrame, 安全9 c+ I0 ^+ s7 v2 Q# M7 s
    目的学习如何搭建HTTPS服务;% G7 w$ l9 g  w8 |6 a
    为开发对安全性有较高要求的页面提供指导,避免不必要的安全漏洞;
    % ~* G& m. F5 x$ f) Q. X0 q, a. {( o步骤1.搭建本地HTTPS;' [& w) l+ Z7 x+ D( y' R! @( g
    2.分别开发所有可能的嵌套场景:* d" I. V9 a1 _. T. k
    • HTTP嵌套HTTPS
    • HTTPS嵌套HTTP
    • HTTPS嵌套HTTPS
    • HTTP嵌套HTTP! D1 G% r8 X6 d. Q% L3 [3 e
    3.分别在现有主流浏览器的各个版本访问嵌套页面,记录浏览器相关提示及限制;
    " c9 A" p1 `( T操作记录环境系统环境:Windows 7 64bit
    ) e3 s' u( r# L( r- y8 n服务器:Apache
    " a( P; V$ J5 k- P' h" v数据库:MySQL6 D1 C0 o# a6 W9 n$ s/ g) O
    服务器语言:PHP7 x2 F' a" E) @
    搭建本地HTTPS下载windows环境的OpenSSL( http://www.openssl.org/related/binaries.html ,由于本人机器使用的是64位系统,所以下载的是64位OpenSSL)( ?, s1 E3 |) K3 N1 o$ d) k& e+ K" a1 M
    在Command中使用一下命令生成搭建HTTPS所需要的证书及相关文件:
    # u' E7 M5 H$ B8 z; w3 R* A(1) 复制apahce2/conf目录openssl.cnf 文件到bin目录9 f2 ~8 r8 x" m( R$ t3 T$ r
    (2) 生成RSA密钥 (private key) 下面两个命令都可以生成密钥:4 X, ^- M: Q- s9 `7 L" s
    • openssl genrsa -des3 -out ca.key
    • openssl genrsa -out ca.key
    • openssl genrsa -out ca.key 10244 S9 z$ [! y5 z' S
    (-des3选项可以加密生成的密钥, 但是Win32平台不支持加密密钥?启动Apache时会产生以下错误信息, “SSLPassPhraseDialog builtin is not supported on Win32″(当时不清楚我就加了-des3参数?且出现这个错误时apache启动不报错?查看日志才发现以上错误。))* V0 h- p$ V. p9 O- }5 a+ F, e
    (3) 产生 CA require cert?按提示填入相应的内容:7 i, Q2 G: g& S' N' a) _
    • openssl req -config openssl.cnf -new -key ca.key -out ca.csr
      3 n% z, M" h& a: t$ ^/ Y
    (4) 产生 CA public cert:2 d1 a. V4 g# u& S3 w# t
    • openssl x509 -days 3650 -req -signkey ca.key -in ca.csr -out ca.crt
      8 {$ M. @! W& }: Q+ b( n
    (5) 产生 Server private key:
    ) g" N" c# q% y7 x
    • openSSL genrsa -out ssl/server.key 1024
      " [- A+ g: A0 j: z# P- j8 t& i. X  I
    (6) 产生 Server require cert?按提示填入和上边相同的内容:8 F* @2 S0 \+ c8 B" e* v( F  ?
    • openssl req -config openssl.cnf -new -key server.key -out server.csr
      3 R8 Y1 b  H& ]8 l( f" y6 Z3 m
    (7) 产生 Server public key:
    " G2 V) b0 S  T3 T* K& \% k
    • openssl ca -config openssl.cnf -days 3650 -cert ca.crt -keyfile ca.key -in server.csr -out server.crt
      6 A) l) b% `8 r, C* a+ a
    运行这个命令会出错?I am unable to access the ./demoCA/newcerts directory….
    1 ]/ }! M, a, Y1 o/ \7 P8 Q4 a错误原因是没有手动创建一个CA目录结构3 x0 R' _9 g  ^! ~% @3 N
    • └─demoCA
    •     ├─newcerts
    •     ├─index.txt
    •     ├─serial2 z7 ], E2 e9 R8 k; ?' K/ C
    在demoCA中建立 index.txt 空文件, serial文件 , serial文件 中可输入01?此时再运行以上的命令即可生成server.crt。 将生成的 ca.crt、server.crt 和 server.key 放入apache的 conf 目录中5 c0 V$ F7 B! ?& a9 c8 z( H! F) Q. [
    (8) 编辑apache的配置文件httpd.conf 去掉以下语句的注释, Include conf/extra/httpd-ssl.conf
    , I% w% ^( @; z7 v# L( y
    • # Secure (SSL/TLS) connections
    • Include conf/extra/httpd-ssl.conf
      ! J" O" w9 b% V% W& w5 s) H% g
    (9) 编辑 conf/extra/httpd-ssl.conf9 d/ j& L* b9 F' C" A
    把SSLMutex标签的值改为default; [3 X* N. k$ {" C) j3 b
    检查以下项目对应的文件的目录是否正确) }$ U1 v7 {2 d* v
    • SSLCertificateFile "D:/web/Apache2.2/conf/server.crt"
    • SSLCertificateKeyFile "D:/web/Apache2.2/conf/server.key"
    • SSLCertificateChainFile "D:/web/Apache2.2/conf/ca.crt"
      . P/ x1 r/ ?7 m( ?$ A/ k/ K  z
    (上述内容需要按照服务安装的实际路径填写,除此之外,配置文件内的所有文件路径都需要确认是否与实际路径相符)- }% O" n  Z; M% B, G$ g# w
    成功搭建HTTPS:4 w, G6 H: `" S2 u# E
    ! z: ^6 p- D1 @, N* E  {0 c
    5 b9 K! i8 T/ {) M

    / ~! m$ s& W6 s! y开发各场景的测试页面HTTP内嵌IFRAME HTTPS
    •    
    •     HTTP iframe HTTPS
    •     这是父页面
    •    
    • ( O) K! X; j2 I0 H' t: q
    HTTPS内嵌IFRAME HTTP
    •    
    •     HTTPS iframe HTTP
    •    
    •     这是父页面
    •    
    • 2 Q' [( S- r0 G8 o! }. K% f9 N& E
    内嵌页面
    •    
    •     Inner HTML
    •     这是子页面

    • ) g/ Y+ m1 m* U7 z% i
    IFRAME内嵌统计结果
    HTTP内嵌HTTPSHTTPS内嵌HTTPHTTPS内嵌HTTPSHTTP内嵌HTTP
    Chrome正常(有证书)正常(有证书)正常(有证书)正常
    Firefox正常(有证书)正常(有证书)正常(有证书)正常
    IE 9.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    IE 8.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    IE 7.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    Opera正常(有证书)正常(有证书)正常(有证书)正常
    IE 9.0安全风险警告信息:

    IE 9.0安全风险警告信息:

    , w6 C+ n) W0 N' i2 I6 m( w
    IE 8.0安全风险警告信息:

    IE 8.0安全风险警告信息


    8 A8 R+ a4 S1 i  d8 ~0 \- YIE 7.0安全风险警告信息:

    IE 7.0安全风险警告信息


    / w# w' n0 ?  k# Q) b$ ], n- Z  [& hJS访问测试父页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.display = function() {
    •         alert(“Parent window.display() called.”);
    •     }
    • // ]]>

    • $ _  Z; g8 Z! ]) b9 k3 v

      % _3 J0 o0 m, r2 X. E" Z( y' B
    子页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.onload = function() {
    •         window.parent && window.parent.display();
    •     }
    • // ]]>

    • 5 K) P' b* \, T+ l  W- F# Z- I! X
      2 p0 G7 B5 ~$ V- h  z
    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 Z4 }7 D3 L, W5 w+ ]  g2 c/ G- J1 OIE 8.0 浏览器报错信息:

    IE 8.0 浏览器报错信息

    2 V2 x+ e; I3 p0 t
    IE 7.0 浏览器报错信息:

    IE 7.0 浏览器报错信息


    7 t& Q) N- ~6 Y. e分析通过上面的测试,浏览器对于HTTPS和HTTP之间用iFrame嵌套并没过于限制,但存在编码问题。另一方面,基于安全考虑,浏览器有对HTTPS和HTTP之间的JavaScript调用有较严格的限制。
    5 j9 }3 t: j# ]0 X; y: y
      A# ^; K- p$ X% |/ C

    1 J1 S3 i( c7 m$ K! S
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩 转发到微博

    本版积分规则

    关闭

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

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