XSS与Flashvars有什么可能?怎么预防呢?

时间:2010-08-19 16:32:23

标签: javascript flash actionscript-3 security xss

最近,客户担心他们的SWF“不安全”,因为XML路径来自Flashvars。在我看来,这并不是真正令人担忧的事情,因为SWF只显示图像/文本和几个按钮链接。我可以理解有人可以如何通过swf并添加一个远程XML路径来将javascript添加到按钮url目标中,但这真的会造成什么损害?
例如。 他们可以改变

http://mysite.com/theflash.swf?xmlpath=xml/thedata.xml

到这个

 http://mysite.com/theflash.swf?xmlpath=http://dodgysite.com/thechangeddata.xml

显然他们可以围绕这个构建一个虚假的包装器html文件,但我仍然看不出他们怎么能做任何有害的事情。我错过了什么吗?

我的下一个问题是,防止这种情况发生的最佳方法是什么? 到目前为止,我已经在我的XSS检查课中了:

  • unescape字符串并删除任何 空格或换行符(\ t,\ n,\ n \ r)
  • 检查字符串中的任何一个 以下(asfunction:,javascript:, event:,vbscript:)
  • 检查绝对或相对路径 通过寻找(http或https)
  • 如果是绝对的,请检查域是否 和主电影一样。

我在本文中找到的大部分过程都是:http://www.adobe.com/devnet/flashplayer/articles/secure_swf_apps_02.html

有没有比这更好的方法?
还有什么办法可以防止闪存中的XSS?

2 个答案:

答案 0 :(得分:2)

我觉得你做得很好!

这可能并非总是可行,但您也可以验证您正在接收的数据结构

例如:如果XML包含图像路径,则可以验证文件是以.jpg / .png结尾并从右侧目录加载。

答案 1 :(得分:1)

黑名单是一个可怕的解决方案。隐含的假设是“如果我寻找这些子串,我将能够捕获所有攻击”;这经常是错的:

  1. 您在网站上添加了“上传”工具(wiki / bug tracker / what),将上传的文件粘贴到/ userUploads /中。这有很多安全问题,但是我们说你设法过滤掉“不安全”的文件(包含JavaScript的HTML等)。细。
  2. 攻击者上传XML文件。您的上传脚本认为它是“安全的”,因为它不是HTML而且不包含标签。
  3. 攻击者将某人发送到http://example.com/theflash.swf?xmlpath=../../../../userUploads/innocent.xml
  4. 最终,您试图通过查找一些子字符串来弄清楚URL解析器如何处理字符串。通过URL解析器将其粘贴并自行提取相关语义会更有效。

    认为一个可能安全的选择是确保路径以“xml /”开头并且不包含“/../”,但它仍然是一个糟糕的“解决方案”。< / p>

    更好的选择是白名单:文件名只能包含[a-z0-9_-]。使用“xml / $ filename.xml”生成路径。如果你没有制作“test.xml”,这就行了。

    更好的选择就是维护从名称到路径的映射,例如: “data”映射到“xml / data.xml”,但“exploit”没有映射,因此它返回错误。这意味着您无法轻松添加文件,但也意味着用户无法指定任意路径。

    编辑:这样的安全问题是由于系统不同部分之间的意外交互(“文件系统上的所有文件都可以信任”)或不正确的假设(“URL解析会给出一个URL)在相同的'目录'“下,”连接路径无法向上导航目录层次结构“,”所有文件名都是正常的“,”检查目录是否存在无法创建它“)。我举了一个例子;毫无疑问还有其他人。

    如果您需要为每个部署配置不同,那么...使用配置! foo.swf可以获取config.xml,其中包含允许路径列表。更好的方法是让config.xml提供从页面名称到XML路径的映射。

    一般而言,暴露实施细节,例如“所有路径恰好与xml/.*\.xml匹配”都是icky,分层违规,并且看起来很像很糟糕的安全性。

相关问题