我可以在CF11中获得强大的XSS保护,我可以在不触及每个查询或输入的情况下应用于整个站点吗?

gna*_*ian 4 javascript xss coldfusion cfwheels antisamy

所以我目前正在使用CF11和CFWheels 1.1,"全局脚本保护"(GSP)服务器功能在覆盖XSS基础方面做得非常糟糕.我想扩展它以阻止JS的任何和所有标签/向量插入到数据库中.

CF11通过getSafeHTML()函数提供antiSamy保护,该函数应用application.cfc中指定的xml策略文件,但我仍然需要修改应用程序中的每个varchar cfqueryparam才能正确使用它?

有没有办法让CF11以与GSP功能类似的方式启用反侦察功能服务器或应用程序?我的意思是GSP会自动从提交给应用程序的输入中删除标签,而无需修改所有查询/表单操作.我想以同样的方式应用反歧义策略文件或getSafeHTML().

谢谢!

Ray*_*den 8

你为什么要把它应用到每个人身上?您只需要为字符串(varchar)输入执行此操作,并且仅在插入时执行此操作.即便如此,你也不会到处使用它.例如,如果你要求我的名字和生物,你没有理由想要我的名字中的html,甚至是"好"的HTML.所以我相信你已经在那里使用了一些东西来逃避所有的HTML或者只是将它全部删除.只有像bio这样的字段才能使用getSafeHTML.

验证是有效的.您(通常)不希望"一次性"解决方案imo.只要咬紧牙关就行了.

如果您确实想这样做,可以使用onRequestStart自动处理表单和URL范围内的所有键.这是由内存写的,所以它可能有拼写错误,但这是一个例子:

function onRequestStart(string req) {
    for(var key in form) { form[key] = getSafeHTML(form[key]); }
    for(var key in url) { url[key] = getSafeHTML(url[key]); }
}
Run Code Online (Sandbox Code Playgroud)

  • 我只是雷.:) (2认同)