我之所以要问的是,我告诉我们的供应商,他们必须将MS AntiXSS库与他们制作的ASP.NET UI组件一起使用,但他们也可以使用Flex来构建基于Flash的UI - 而我我想知道是否有相当于Flash(假设它是有价值的)。
答案 0 :(得分:2)
如果我理解正确......
ASP.NEt用于制作网页,他们制作的所有UI组件将作为HTML / JavaScript在浏览器中运行。那是对的吗?
如果是这种情况,我可以理解为什么在这种情况下防止跨站点脚本编写很重要。
使用Flex(在Flash Player中运行),所有内容都被编译成二进制文件,称为SWF。大多数情况下,SWF在Flash Player中运行,Flash Player作为插件在浏览器中运行。使用XSS无法破解单个Flex组件。
我不相信您编写的代码需要受到保护,以免受跨站脚本攻击。你最大的恐惧是玩家的漏洞,你无法控制它。
这些都不是不验证用户输入的原因。
答案 1 :(得分:1)
简短的回答是:Flash播放器具有许多防止XSS攻击的功能,但它们内置于播放器本身,因此您不需要使用任何特定的库。如果您不调用任何与安全相关的API,并且未在服务器上放置配置文件,那么从安全角度来说,您已经在使用可用的限制性最强的设置。 (假设您也注意如何使用用户输入。)
更一般地说,除非您主动启用,否则在XSS情况下,可能会导致可能导致XSS漏洞的API被禁用。例如,如果您网站上的HTML页面加载到另一个网站的Flash文件中,并且该Flash内容会尝试对您的网页进行javascript调用,则默认情况下会阻止这些调用,除非您允许这些调用。同样,如果您网站上的Flash内容加载到其他网站的组件中,那么这些组件将无法内省其父级,除非您调用API以允许它们。如果其他网站尝试从您的网站加载Flash内容而未经您允许,则会发生各种限制。
对于所有细节,我强烈推荐这个优秀的概述:
尽管如此,由于您还询问了如何清理用户输入,因此值得注意的是,由于AS3没有等效的eval
命令,因此用户输入永远不会作为脚本执行。但是,与正在加载的内容相关的任何用户输入都可能是XSS攻击的向量。 (例如,如果您将用户输入的字符串附加到然后加载的URL,则用户可能会导致您的站点加载其恶意SWF。)但是这种情况与您在良性第3版中加载的情况没有什么不同-party SWF,后来有人用恶意内容替换它。因此,在Flash的上下文中,防止XSS攻击并不是要清理用户输入,因为它确保外部加载的内容不被授予运行权限,就好像它们是本地信任的一样。
此外,如果你想对第三方内容(如flash头像,组件甚至横幅广告)做一些有趣的事情,放松默认限制通常是有用或必要的,在这些情况下,这对网站来说很重要管理员了解他们允许的内容,以及如何防止轻松的限制暴露漏洞。