cfml - 禁用查询的 HTML 输出

标签 cfml

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

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

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

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

最佳答案

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

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

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

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

关于cfml - 禁用查询的 HTML 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15721368/

相关文章:

arrays - ArraySort 回调未按正确顺序对我的数组进行排序

php - Web 开发中的源代码控制系统

coldfusion - 使用 cfscript new StoredProc() 时如何获取存储过程的结果

cfml - 本地开发上的 Lucee Express

coldfusion - 元素 xx 在作为表达式的一部分引用的 CFML 结构中未定义

coldfusion - 如何用一位数字替换前两位数字 Coldfusion

coldfusion - cfdocument 问题 - cfdocument 没有正文

arrays - 基于模式匹配的冷融合计数

java - 如何生成 OpenOffice Draw 文档?

input - Coldfusion输入类型= 'hidden'不隐藏