Javascript 使用XSS和Flashvars可以做什么?如何预防?
最近,一个客户担心他们的SWF“不安全”,因为XML路径来自FlashVar。在我看来,这并不是一个真正的问题,因为SWF只显示图像/文本和一些按钮链接。我可以理解,有人如何通过路径到swf并添加一个远程XML路径来向按钮url目标添加javascript,但这真的会造成什么损害?Javascript 使用XSS和Flashvars可以做什么?如何预防?,javascript,flash,actionscript-3,security,xss,Javascript,Flash,Actionscript 3,Security,Xss,最近,一个客户担心他们的SWF“不安全”,因为XML路径来自FlashVar。在我看来,这并不是一个真正的问题,因为SWF只显示图像/文本和一些按钮链接。我可以理解,有人如何通过路径到swf并添加一个远程XML路径来向按钮url目标添加javascript,但这真的会造成什么损害? 如。 他们可以改变 http://mysite.com/theflash.swf?xmlpath=xml/thedata.xml 对此 http://mysite.com/theflash.swf?xmlpath
如。 他们可以改变
http://mysite.com/theflash.swf?xmlpath=xml/thedata.xml
对此
http://mysite.com/theflash.swf?xmlpath=http://dodgysite.com/thechangeddata.xml
显然,他们可以围绕这个构建一个虚假的包装器html文件,但我仍然不明白他们如何利用这个做任何有害的事情。我错过什么了吗
我的下一个问题是防止这种情况发生的最佳方法是什么?到目前为止,我在XSS检查类中有:
- 取消缩放字符串并移除任何 空格或换行符(\t\n\r)
- 检查字符串中是否存在任何 以下内容(asfunction:,javascript:, 事件:,vbscript:)
- 检查绝对或相对路径 通过查找(http或https)
- 如果是绝对值,请检查域是否为绝对值 和主要电影一样
还可以做些什么来防止flash中的XSS?我认为您已经做得很好了 这可能并不总是可能的,但您也可以验证正在接收的数据结构
例如:如果XML包含图像的路径,您可以验证文件是否以.jpg/.png结尾,是否从正确的目录加载。黑名单是一个糟糕的解决方案。隐含的假设是“如果我查找这些子字符串,我将能够捕获所有攻击”;这通常是错误的:
http://example.com/theflash.swf?xmlpath=../../../../userUploads/innocent.xml
一般来说,公开实现细节,如“所有路径恰好匹配
xml/*\.xml
“令人讨厌,是一种分层违规行为,看起来很像糟糕的安全性。黑名单不是一个好的解决方案,因为很难确保您涵盖了所有案例。您好!如果您知道所期望的数据结构类型,那么可以对其进行一些基本测试,以便在使用之前验证其真实性。使用您的参数,这实际上是白名单,因为数据结构将根据它必须具有的属性列表进行测试,而不是相反。谢谢您的评论。您的数据验证是一个好主意。感谢您的输入。我可以看到黑名单的问题,但是我不确定是否还有其他选择。(有限的)验证和白/黑列表的组合似乎是最好的选择。我不关心上传,只是保护任何部署的SWF站点。XML路径必须来自FlashVar的原因是这些构建部署在不同的国家,并且无法保证站点结构。因此,检查“xml/”或“./”不是一个选项,因为这需要两种(以及更多)可能性。对于这样的站点,XSS“攻击”有什么危险?