注意:我照顾SQL注入和输出转义其他地方 - 这个问题只关于输入过滤,谢谢。用户输入过滤 - 我需要过滤HTML吗?
我正在重构我的用户输入过滤函数。在GET/POST参数传递到特定类型的过滤器filter_var()之前,我做了以下内容:
- 检查参数编码与mb_detect_encoding()
- 转换为UTF-8 iconv()(以//无视),如果它是不是ASCII或UTF-8
- 干净的白色空间与a function found on GnuCitizen.org
- 结果传递直通strip_tags() - 没有允许在所有标签,降价只是
现在的问题:将参数传递给像htmLawed或HTML Purifier这样的过滤器还是有意义的,还是我可以将输入视为安全的?在我看来,这两个主要不同在于允许的HTML元素和属性的粒度(我不感兴趣,因为我删除了所有内容),但htmLawed文档有一段关于'dangerous characters'的部分,这表明可能有一个原因使用它。在这种情况下,它会是一个理智的配置?
危险字符可能是UTF-8控制字符。 – Jacco 2010-02-21 13:14:46
有关如何摆脱它们的任何建议? – djn 2010-02-21 15:40:55
我并没有真正了解你的注意事项,SQL注入是关于防止SQL查询中令人讨厌的用户输入。事实上,大多数的漏洞都是由于讨厌的INPUT,而不是输出。这些被称为“污点和水槽”漏洞。 – rook 2010-02-21 23:59:30