客户端跨域请求安全与表单历史防攻击策略
客户端Flash代理跨域请求的安全问题与解决方案
Flash小程序与HTML/JavaScript环境交互能力有限,难以应对攻击者设置的JavaScript包装器,因此从JavaScript获取的数据不可信。但Flash又需依赖JavaScript获取所在页面的URL以做安全敏感决策。
为解决这一问题,提出了重定向到片段标识符的对策。当浏览器窗口重定向到包含片段标识符(即本地锚点)的URL时,页面加载完成后会自动滚动到文档中相应位置。若当前页面URL与重定向目标相同,则跳过页面加载步骤,直接访问本地锚点。利用这一特性可验证Flash外部接口机制获取的URL的正确性。
具体操作步骤如下:
1. Flash小程序接收所在页面的假定URL后,在该URL后附加一个片段标识符,并指示浏览器重定向到该位置。
- 若最初接收的URL正确,重定向不会导致浏览器实际重新加载页面,仅在页面存在匹配锚点时改变页面滚动位置;若不存在匹配锚点,重定向则无任何效果,且Flash仍在页面中保持活跃,可执行发起的操作。
- 若从JavaScript接收的URL被篡改,浏览器会将用户重定向到攻击者JavaScript声称的源页面,Flash小程序停止执行。
2. 该方案存在一个弱点,攻击者可使用JavaScript事件处理程序(如window.onbeforeunload)阻止浏览器重定向,而Flash小程序无法直接察觉这种行为。
3. 为防止此类情况,在片段标识符中包含一个随机数(大且不可猜测)。在执行安全敏感操作前,Flash小程序再次向JavaScript请求所在URL,并将接收到的URL与之前保存的包含随机数的URL
超级会员免费看
订阅专栏 解锁全文
19

被折叠的 条评论
为什么被折叠?



