当前位置: 代码迷 >> JavaScript >> 跨域代理页执行Javascript控制TOP窗体dom,安全有关问题
  详细解决方案

跨域代理页执行Javascript控制TOP窗体dom,安全有关问题

热度:132   发布时间:2012-10-21 09:00:07.0
跨域代理页执行Javascript控制TOP窗体dom,安全问题.
各位好,近期我在工作中遇到这么一个问题:

在一个b/s软件系统后台嵌入一个跨越的iframe来推送和软件有关的官方信息。

但由于软件系统可能会在局域网部署,所以就遇到iframe出现404的错误页面,体验很不好。

――――

我的解决方法是:

1.嵌入到软件端的iframe(FRM01)默认visibility :hidden;
2.软件端建立接收代理页请求接口,并再将此接口url带入(FRM01) src的get参数。
3.在(FRM01)中再嵌入一个代理iframe(FRM02)
4.当(FRM01)成功被加载时,把需要执行的脚本字符POST方式提交到(FRM02)软件端接口,软件端直接echo脚本。
[形成同域,脚本中可直接用top.document控制软件端dom]


遇到的问题:

---safari浏览器的默认安全策略会禁止脚本的执行。---

此问题纠结好久,最终测试发现 safari浏览器会判断POST请求中是否有包含response脚本代码块。如果有,则会被安全策略禁止。

那么简单的解决办法就是把post请求过去的脚本代码编码(base64),在软件接口端解码echo输出。问题被解决!



――――――

这样的实现细心的朋友可以发现,在嵌入官方的那个iframe中可以放入任意javascript 代码,被客户端请求执行。

――――――――


关于安全上面我考虑的不多,不知道有没有什么隐患?请各位讨论。

  相关解决方案