代码之家  ›  专栏  ›  技术社区  ›  danjp

带Flashvars的XSS有什么可能?如何预防?

  •  1
  • danjp  · 技术社区  · 15 年前

    最近,一个客户担心他们的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文件,但我仍然不明白他们怎么能用这个做任何有害的事情。我错过什么了吗?

    我的下一个问题是,防止这种情况发生的最佳方法是什么?

    • 取消对字符串的scape并删除任何 空格或换行符(\t、\n、\r)
    • 检查字符串中是否有 事件:,vbscript:)
    • 检查绝对或相对路径
    • 和主要电影一样。

    我在这篇文章中发现了这个过程的大部分内容: http://www.adobe.com/devnet/flashplayer/articles/secure_swf_apps_02.html


    还有什么方法可以阻止flash中的XSS?

    2 回复  |  直到 15 年前
        1
  •  1
  •   tc.    15 年前

    1. 您将一个“上传”工具添加到您的站点(wiki/bug tracker/whatever),它将上传的文件粘贴在/userUploads/中。这有很多安全问题,但假设您设法过滤掉“不安全”的文件(包含JavaScript的HTML等)。好的。
    2. 攻击者派人去 http://example.com/theflash.swf?xmlpath=../../../../userUploads/innocent.xml .

    最终,您将试图通过查找几个子字符串来确定URL解析器将如何处理字符串。更有效的方法是将其通过URL解析器并自己提取相关的语义。

    认为 一个潜在的安全选项是确保路径以“xml/”开头,并且不包含“/…/”,但这仍然是一个糟糕的“解决方案”。

    一个更好的选择是白名单:文件名只能包含[A-z0-9 \-]。用“xml”生成路径/$文件名.xml". 只要你不犯错误测试.xml".

    更好的选择是只维护从名称到路径的映射,例如“data”映射到“xml”/data.xml,但“利用漏洞”没有映射,因此它返回一个错误。这意味着您不能轻松地添加文件,但也意味着用户不能指定任意路径。

    编辑: 出现这种安全问题的原因是系统不同部分之间的意外交互(“文件系统上的所有文件都可以信任”)或错误的假设(“URL解析将在同一个‘目录’下给出一个URL”,“串联路径无法向上导航目录层次结构”,“所有文件名都是正常的”,“检查目录是否存在无法创建它”)。我举了一个例子,毫无疑问还有其他例子。

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

    一般来说,公开实现细节,如“所有路径恰好匹配” xml/.*\.xml “是讨厌的,一个分层违规,看起来像一个 安全性差。

        2
  •  2
  •   jdecuyper    15 年前

    我想你已经做得很好了!

    这可能并不总是可能的,但你也可以 验证正在接收的数据结构 .

    推荐文章