我继承了一些遗留的 ColdFusion 代码,大约一年前,我的网站受到了 XSS 和 SQL 注入(inject)的攻击。</p>
这使我验证传入的输入,并在我的 application.cfm
文件中包含 ScriptProtect="all"设置。我扫描了它,结果很干净。
最近我再次对其进行了扫描,发现了许多漏洞,特别是在 URL 中嵌入了脚本的漏洞。
例如,这被附加到一个网址:
?’A<style > a(font0family:expression(alert(2424)))</style>
其中嵌入了隐藏的 JavaScript。如何在 application.cfm
文件中使用 ColdFusion 函数(例如 URLencode()
)来检测/防止此类 XSS 攻击?
最佳答案
根据攻击的性质和应用程序的类型,您可以执行一些具体操作。以下是我认为的“三大”。第一项是在Coldfusion管理员的“设置”区域中启用“启用全局脚本保护”。
第二个,这对于 SQL 注入(inject)非常重要,是使用
<cfqueryparam cfsqltype="cf_sql_integer" value="#my_integer#">
在基于脚本的查询中,这可以通过以下方式完成:
<cfscript>
qget = new query(datasource=my_datasource);
qget.addParam(name='my_integer',value=url.my_id,cfsqltype='cf_sql_integer');
qresult = qget.execute(sql='
SELECT * from my_table
WHERE id = :my_integer
').getResult();
</cfscript>
第三个取决于您是通过 API 还是内部调用从应用程序使用 JSON。在 CF 管理员中使用您选择的前缀启用“前缀序列化 JSON”设置也有助于应对跨站点脚本攻击。
如果您不在 Adobe CF 服务器上,请不用担心。 Railo 和 Blue Dragon 都有相同的功能。
关于coldfusion - 在application.cfm中使用urlencode检测url中的XSS ColdFusion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20383856/