禁用查询的HTML输出

时间:2013-03-30 17:29:06

标签: cfml

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

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

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

在显示输出时,是否还有过滤特殊字符(&lt; @#!$%^ *(&amp;&gt;))的其他方法?

1 个答案:

答案 0 :(得分:3)

你应该做这两件事(至少)来消毒用户输入:

  1. 使用<cfqueryparam ... >清理SQL的数据。这可以通过转义特殊的SQL字符和序列来防止SQL注入攻击。
  2. 使用HTMLEditFormat()显示数据时清理数据。这可以通过转义特殊HTML字符来防止各种客户端漏洞。
  3. 如果你想进一步提高你的安全性,Portcullis看起来是一个很好的解决方案(尽管我自己没有使用它)。

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