3

我创建了一个表单(在 ColdFusion 中),它将一个值提交到数据库中,然后显示插入的值。问题是当用户或黑客插入 HTML 标签或 javascript 标签时,ColdFusion 也会将其显示为输出值。

我知道有一些方法可以过滤使用 CFset 提交的特殊字符,但我不想使用那种方法。所以不是这样的:

<cfset cleanmessage = ReReplace(getmessages.message, "[^\w]*", "", "ALL")>

显示输出时是否有其他方法过滤特殊字符 (<@#!$%^*(&>)?

4

1 回答 1

3

您应该(至少)做这两件事来清理用户输入:

  1. 使用 为 SQL 清理数据<cfqueryparam ... >。这通过转义特殊的 SQL 字符和序列来防止 SQL 注入攻击。
  2. 在显示数据时使用HTMLEditFormat(). 这通过转义特殊的 HTML 字符来防止各种客户端漏洞。

如果您想进一步提高安全性,Portcullis看起来是一个很好的解决方案(虽然我自己没有使用过)。

关于使用<cfset ... >:您可以使用类似HTMLEditFormat()不使用的功能cfset。无需创建新变量来存储函数的结果,只需在调用函数时显示结果,如下所示:<cfoutput>#HTMLEditFormat(data)#</cfoutput>

于 2013-03-30T18:36:42.957 回答