在Coldfusion 9中清理字符串/输入

4

最近我一直在使用Coldfusion 9(主要背景是PHP),我正在努力想方设法“清理/净化”用户提交的输入/字符串。

我希望将其变为HTML安全,消除任何javascript或SQL查询注入等常见问题。 我希望我已经忽略了CF9中已经存在的某种函数。

有人能指点我正确的方向吗?

4个回答

7

6
这是对Kyle建议的补充,而不是替代答案,但评论面板对于链接来说有点垃圾。
看一下ColdFusion的string functions。你有HTMLCodeFormat、HTMLEditFormat、JSStringFormat和URLEncodedFormat。所有这些都可以帮助您处理从表单中发布的内容。
您还可以尝试使用正则表达式函数来删除HTML标签,但这永远不是精确的科学。这个ColdFusion based regex/html question应该会有所帮助。

您还可以尝试使用类似cfformprotect的工具来保护自己免受机器人和已知垃圾邮件发送者的侵害,该工具将Project HoneypotAkismet等保护工具集成到您的表单中。


好的答案,我得接受这个,尽管 Kyle 先回答了,但我觉得你的回答更加详细。谢谢,很有启发 :) - Jakub
公平无误,我很高兴至少能够帮上一点忙。=) - Kyle Humfeld
应该注意到,orangepips的回答也是有效的,只是在我开始我的帖子时还没有发布。AntiSamy是我们也用于数据输入净化的工具。 - Stephen Moretti

1

你有几个选择:

  1. "全局脚本保护"管理员设置,它会对POST和GET(即FORM和URL)变量应用正则表达式,以剥离<script/><img/>和其他几个标签。
  2. 使用isValid()来验证变量的数据类型(请参见我的深入回答)。
  3. <cfqueryparam/>,它用于创建SQL绑定参数验证传递给它的数据类型。

话虽如此,如果您真的想要清理 HTML,请使用 Java,ColdFusion 可以本地访问它。特别是使用 OWASP AntiSamy 项目,它可以接受 HTML 片段并将其中的值列入“白名单”。这是像 SO 和 slashdot.org 这样的网站用来保护提交内容的方法,也是一种更安全的接受标记内容的方法。


0

在ColdFusion和几乎任何语言中,字符串的清理非常重要,这取决于您想对该字符串执行什么操作。大多数缓解措施是为了:

  • 将内容保存到数据库(例如,<cfqueryparam ...>
  • 使用内容显示在下一页上(例如,在链接中放置URL参数或在文本中显示URL参数)
  • 保存文件并使用上传的文件名和内容

如果您遵循通过在第一步允许基本上所有内容来预防和减少字符串的想法,并通过删除或替换字符来消除恶意代码(黑名单方法),则始终存在风险。更好的解决方案是使用正则表达式再次使用rereplace(...)替换字符串,该正则表达式明确允许仅用于您将其用作简单解决方案的场景所需的字符。用例包括数字、列表、电子邮件地址、网址、名称、邮政编码、城市等输入。

例如,如果您想要请求电子邮件地址,则可以使用

<cfif reFindNoCase("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.(?:[A-Z]{5})$", stringtosanitize)>...ok, clean...<cfelse>...not ok...</cfif>

(或者是自己写的正则表达式)。 对于 HTML 输入或 CSS 输入,我还推荐使用 OWASP Java HTML Sanitizer Project


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接