跨域代理页执行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输出。问题被解决!

[img]http://dl.iteye.com/upload/attachment/462945/a42349c8-0984-3b5a-9da5-886363531dc0.png[/img]

——————

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

————————


关于安全上面我考虑的不多,不知道有没有什么隐患?请各位讨论。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值