下沙论坛

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

用新浪微博连接

一步搞定

QQ登录

QQ登录

下沙大学生网QQ群8(千人群)
群号:6490324 ,验证:下沙大学生网。
用手机发布本地信息严禁群发,各种宣传贴请发表在下沙信息版块有问必答,欢迎提问 提升会员等级,助你宣传
新会员必读 大学生的论坛下沙新生必读下沙币获得方法及使用
查看: 6637|回复: 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, 安全! z4 s1 k& r3 ~
    目的学习如何搭建HTTPS服务;
    2 z# V* r+ U5 ]6 X: c; _% K为开发对安全性有较高要求的页面提供指导,避免不必要的安全漏洞;" B: Y& {# u  {1 ?) Z
    步骤1.搭建本地HTTPS;  w, m, x  ^+ E8 ~9 l8 K) D
    2.分别开发所有可能的嵌套场景:
    . l3 ?2 o" L) x2 |+ Y/ Z6 U/ N
    • HTTP嵌套HTTPS
    • HTTPS嵌套HTTP
    • HTTPS嵌套HTTPS
    • HTTP嵌套HTTP
      ) a# I  J& F; A2 U5 J7 `
    3.分别在现有主流浏览器的各个版本访问嵌套页面,记录浏览器相关提示及限制;5 |) K& s& W: c, [' ~9 b
    操作记录环境系统环境:Windows 7 64bit
    8 F$ M+ B) w9 W( J9 h服务器:Apache
    ) k5 L$ t! ^( {* j# b数据库:MySQL! K7 p6 M- v9 E5 I* r, _
    服务器语言:PHP5 V5 a/ w0 [3 Y; z/ I; n
    搭建本地HTTPS下载windows环境的OpenSSL( http://www.openssl.org/related/binaries.html ,由于本人机器使用的是64位系统,所以下载的是64位OpenSSL)
    / L) [/ ]2 r# f$ X在Command中使用一下命令生成搭建HTTPS所需要的证书及相关文件:
    ; b3 u  I; \4 u" A' t3 L(1) 复制apahce2/conf目录openssl.cnf 文件到bin目录
    * ]3 r2 H3 ~- c' H( Z(2) 生成RSA密钥 (private key) 下面两个命令都可以生成密钥:4 P+ R( j  m8 B( N; {1 p8 @
    • openssl genrsa -des3 -out ca.key
    • openssl genrsa -out ca.key
    • openssl genrsa -out ca.key 1024
      ' I+ A/ `" e" s, b) `9 D
    (-des3选项可以加密生成的密钥, 但是Win32平台不支持加密密钥?启动Apache时会产生以下错误信息, “SSLPassPhraseDialog builtin is not supported on Win32″(当时不清楚我就加了-des3参数?且出现这个错误时apache启动不报错?查看日志才发现以上错误。)). Y2 t$ Z% @; h9 F' T
    (3) 产生 CA require cert?按提示填入相应的内容:
    9 K: J% k$ ?) N, D0 o
    • openssl req -config openssl.cnf -new -key ca.key -out ca.csr6 o6 o; G% b; K  K9 \$ n
    (4) 产生 CA public cert:6 h/ I- ^4 ]; F' n! R! X0 J; z9 @# D
    • openssl x509 -days 3650 -req -signkey ca.key -in ca.csr -out ca.crt' j. x& `/ l9 a: C2 V3 U% T
    (5) 产生 Server private key:
    4 B! @5 y( W3 m& H  `- i2 T/ h& P
    • openSSL genrsa -out ssl/server.key 1024
      0 J% G- U  e. K* ^
    (6) 产生 Server require cert?按提示填入和上边相同的内容:! i1 ]6 C1 d; H& u# r
    • openssl req -config openssl.cnf -new -key server.key -out server.csr5 r  G& [1 \1 V0 Y( D2 _' a/ Q
    (7) 产生 Server public key:4 Z+ V: l5 ^' R9 z$ j, Y
    • openssl ca -config openssl.cnf -days 3650 -cert ca.crt -keyfile ca.key -in server.csr -out server.crt& d: b* h" E" e
    运行这个命令会出错?I am unable to access the ./demoCA/newcerts directory….
    6 p* R+ r+ N, ?4 G( M错误原因是没有手动创建一个CA目录结构
    7 x' Z& I" T" s, Y# w
    • └─demoCA
    •     ├─newcerts
    •     ├─index.txt
    •     ├─serial
      / c- ^( \( B) g  I* g
    在demoCA中建立 index.txt 空文件, serial文件 , serial文件 中可输入01?此时再运行以上的命令即可生成server.crt。 将生成的 ca.crt、server.crt 和 server.key 放入apache的 conf 目录中
    / n1 H; B, {4 p3 b2 O: b8 Y(8) 编辑apache的配置文件httpd.conf 去掉以下语句的注释, Include conf/extra/httpd-ssl.conf
    / X: O- R* z' p5 ^# B- z
    • # Secure (SSL/TLS) connections
    • Include conf/extra/httpd-ssl.conf
      & {" g7 I2 C, A2 r) D  F( @
    (9) 编辑 conf/extra/httpd-ssl.conf7 y% i, B  T+ i7 ^3 i
    把SSLMutex标签的值改为default, }6 F8 |1 A; V" e( R
    检查以下项目对应的文件的目录是否正确" H* N: Q. M! [
    • SSLCertificateFile "D:/web/Apache2.2/conf/server.crt"
    • SSLCertificateKeyFile "D:/web/Apache2.2/conf/server.key"
    • SSLCertificateChainFile "D:/web/Apache2.2/conf/ca.crt"# _2 l  A" X1 G% h& f$ d
    (上述内容需要按照服务安装的实际路径填写,除此之外,配置文件内的所有文件路径都需要确认是否与实际路径相符)
      a8 n! r4 T/ U/ n成功搭建HTTPS:- }9 G1 @$ ?  n) h
    & [7 m3 J* N$ T" U
    5 T$ _5 ^# }, f" o- x: z
    8 L1 f7 s3 h7 g* h0 j' g2 t9 r
    开发各场景的测试页面HTTP内嵌IFRAME HTTPS
    •    
    •     HTTP iframe HTTPS
    •     这是父页面
    •    

    • 9 y8 R! g5 a2 J% v0 x% c9 B0 g
    HTTPS内嵌IFRAME HTTP
    •    
    •     HTTPS iframe HTTP
    •    
    •     这是父页面
    •    
    • " O) g& S' Y) C0 v5 k3 s
    内嵌页面
    •    
    •     Inner HTML
    •     这是子页面

    • 4 @" e! L4 q  Y# s3 C( `
    IFRAME内嵌统计结果
    HTTP内嵌HTTPSHTTPS内嵌HTTPHTTPS内嵌HTTPSHTTP内嵌HTTP
    Chrome正常(有证书)正常(有证书)正常(有证书)正常
    Firefox正常(有证书)正常(有证书)正常(有证书)正常
    IE 9.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    IE 8.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    IE 7.0父页面展示正常,子页面含不安全警告(有证书)正常(有证书)正常(有证书)正常
    Opera正常(有证书)正常(有证书)正常(有证书)正常
    IE 9.0安全风险警告信息:

    IE 9.0安全风险警告信息:

    0 ~3 Q* n2 Q* y( o! O6 ?
    IE 8.0安全风险警告信息:

    IE 8.0安全风险警告信息


    9 Y% i2 L0 x1 vIE 7.0安全风险警告信息:

    IE 7.0安全风险警告信息

    # l- n; u  |# y: l# D9 \
    JS访问测试父页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.display = function() {
    •         alert(“Parent window.display() called.”);
    •     }
    • // ]]>

    • + a3 i  E2 L( u8 J; R
        O3 X- w' G; [& j* W5 B1 t
    子页面
    • <script type="mce-”text/javascript”">
    • //
    •     window.onload = function() {
    •         window.parent && window.parent.display();
    •     }
    • // ]]>

    • # Q% W# t* r% L- W  R. j
      ! ~9 y& n" ?2 y8 v. {# 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 控制台报错信息

    ( ]$ X+ R1 a, U& q6 H
    IE 8.0 浏览器报错信息:

    IE 8.0 浏览器报错信息

    : S! s& E) e, x, o! l6 D
    IE 7.0 浏览器报错信息:

    IE 7.0 浏览器报错信息

    # e3 f- k7 B8 j. A2 M7 X6 u
    分析通过上面的测试,浏览器对于HTTPS和HTTP之间用iFrame嵌套并没过于限制,但存在编码问题。另一方面,基于安全考虑,浏览器有对HTTPS和HTTP之间的JavaScript调用有较严格的限制。
    * n( L6 b2 c/ W

    & O, R6 A& j  X9 _7 h  \9 _( [/ s* E" X0 C
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩 转发到微博
    关闭

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

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