2

我继承了一些遗留的 ColdFusion 代码,大约一年前,我的网站遭到 XSS 和 SQL 注入攻击。

这导致我验证输入以及在我的application.cfm文件中包含 ScriptProtect="all" 的设置。我把它扫描了,结果很干净。

最近我再次对其进行了扫描,它发现了许多漏洞,特别是其中一个在 url 中嵌入了脚本的漏洞。

例如,这是附加到一个 url:

?’A<style > a(font0family:expression(alert(2424)))</style>

其中嵌入了隐藏的 JavaScript。如何使用文件URLencode()中的ColdFusion 功能application.cfm来检测/防止此类 XSS 攻击?

4

1 回答 1

2

您可以做一些具体的事情,具体取决于攻击的性质和应用程序的类型。以下是我认为的“三巨头”。第一项是在Coldfusion管理员的“设置”区域中启用“启用全局脚本保护”。

第二个,这对于 SQL 注入非常重要,是使用 <cfqueryparam> 对查询中使用的任何变量进行严格键入。例如:

<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 管理员中使用您选择的前缀启用“Prefix Serialized JSON”设置也有助于解决跨站点脚本攻击。

如果您不在 Adob​​e CF 服务器上,请不要担心。Railo 和 Blue Dragon 都具有相同的功能。

于 2013-12-04T23:10:44.220 回答