下沙论坛

标题: HTTPS和HTTP相互间IFRAME的浏览器限制及安全提示 [打印本页]

作者: 煎饼    时间: 2014-3-6 12:16
标题: HTTPS和HTTP相互间IFRAME的浏览器限制及安全提示
作者: 阿伦 日期: 2013 年 3 月 21 日分类: HTTP, Javascript标签: HTTP, HTTPS, IFrame, 安全
; _# m1 E3 a; Q! j4 g% l目的学习如何搭建HTTPS服务;6 q8 p3 ~. {* K. J; }7 F5 W
为开发对安全性有较高要求的页面提供指导,避免不必要的安全漏洞;
/ z2 }# ~. ~( v' R, L6 i步骤1.搭建本地HTTPS;
1 s8 ^/ N, J1 S: g! F2.分别开发所有可能的嵌套场景:
; }; N; C6 j0 M' O& N5 X( D3.分别在现有主流浏览器的各个版本访问嵌套页面,记录浏览器相关提示及限制;
5 }6 r( S: e8 \: B操作记录环境系统环境:Windows 7 64bit3 W: r) f* ~" B
服务器:Apache
6 K8 l+ ]& d  @/ `数据库:MySQL* h0 |# R  S* e, U" d
服务器语言:PHP2 D2 H; T  N+ d/ {
搭建本地HTTPS下载windows环境的OpenSSL( http://www.openssl.org/related/binaries.html ,由于本人机器使用的是64位系统,所以下载的是64位OpenSSL)
  m, d) x: T9 j% r* ?7 l7 j在Command中使用一下命令生成搭建HTTPS所需要的证书及相关文件:3 y: J  \. x) }' w6 Q, N6 `
(1) 复制apahce2/conf目录openssl.cnf 文件到bin目录
7 l0 Y0 }2 A, ^+ \2 D# W(2) 生成RSA密钥 (private key) 下面两个命令都可以生成密钥:+ \0 n: ?, T( p2 y
(-des3选项可以加密生成的密钥, 但是Win32平台不支持加密密钥?启动Apache时会产生以下错误信息, “SSLPassPhraseDialog builtin is not supported on Win32″(当时不清楚我就加了-des3参数?且出现这个错误时apache启动不报错?查看日志才发现以上错误。))
! @2 {! ^4 T* ]1 |% [- m(3) 产生 CA require cert?按提示填入相应的内容:1 ^: J5 C8 k; c& p4 P
(4) 产生 CA public cert:$ {& c* x% r; c
(5) 产生 Server private key:- L' F8 R$ O) M& G
(6) 产生 Server require cert?按提示填入和上边相同的内容:& t" E; s, p: A) ]# u
(7) 产生 Server public key:. _1 B% f% ^) z5 g
运行这个命令会出错?I am unable to access the ./demoCA/newcerts directory….8 ~& V; }' m5 l
错误原因是没有手动创建一个CA目录结构7 d( J* H4 e) g" |3 _
在demoCA中建立 index.txt 空文件, serial文件 , serial文件 中可输入01?此时再运行以上的命令即可生成server.crt。 将生成的 ca.crt、server.crt 和 server.key 放入apache的 conf 目录中, Y+ x5 @. V6 i- Z/ G- v
(8) 编辑apache的配置文件httpd.conf 去掉以下语句的注释, Include conf/extra/httpd-ssl.conf
5 b5 q6 i- F$ g9 G' `8 H7 }(9) 编辑 conf/extra/httpd-ssl.conf
& i( t- i' J( b! }; S把SSLMutex标签的值改为default
5 M. H# ~1 R  X: T检查以下项目对应的文件的目录是否正确. Y% w- D) W4 b4 E  z1 m! z
(上述内容需要按照服务安装的实际路径填写,除此之外,配置文件内的所有文件路径都需要确认是否与实际路径相符)
' n' j: @8 h, L. S7 z成功搭建HTTPS:
9 I3 g" y% k: F5 l) P/ F- e$ f( O) P1 ^% H9 H2 _8 D

HTTPS搭建完成

+ M! x( y. N' D8 n+ w1 p- u

' R$ K4 V1 B: l: K* z开发各场景的测试页面HTTP内嵌IFRAME HTTPSHTTPS内嵌IFRAME HTTP内嵌页面IFRAME内嵌统计结果
HTTP内嵌HTTPSHTTPS内嵌HTTPHTTPS内嵌HTTPSHTTP内嵌HTTP
Chrome正常(有证书)正常(有证书)正常(有证书)正常
Firefox正常(有证书)正常(有证书)正常(有证书)正常
IE 9.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
IE 8.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
IE 7.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
Opera正常(有证书)正常(有证书)正常(有证书)正常
IE 9.0安全风险警告信息:

IE 9.0安全风险警告信息:


5 k- M0 o% T! o  t+ P9 `& mIE 8.0安全风险警告信息:

IE 8.0安全风险警告信息


3 K. S, K& n1 n9 J2 q& f  J3 XIE 7.0安全风险警告信息:

IE 7.0安全风险警告信息


1 f" P& q" H5 x# uJS访问测试父页面子页面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 控制台报错信息


% a) {6 i& j5 _/ m6 u' G# BIE 8.0 浏览器报错信息:

IE 8.0 浏览器报错信息


/ q# v( b$ u8 m# D) lIE 7.0 浏览器报错信息:

IE 7.0 浏览器报错信息

8 z  f2 \! E0 n, {! i  r- r- {
分析通过上面的测试,浏览器对于HTTPS和HTTP之间用iFrame嵌套并没过于限制,但存在编码问题。另一方面,基于安全考虑,浏览器有对HTTPS和HTTP之间的JavaScript调用有较严格的限制。5 B8 e" T+ \) s
4 E4 q! N9 I: c& F

  i5 B& ]1 j9 f0 i3 B6 E% b





欢迎光临 下沙论坛 (http://bbs.xiasha.cn/) Powered by Discuz! X3.3