我有一个<textarea>
,其值被发送到服务器并存储在数据库中。然后,此值将在HTML中的不同页面上呈现。
我需要做些什么才能消毒?只需删除HTML标记? (它已经是SQL注入安全的,因为我正在使用存储过程和参数。)
有没有人有消毒程序?
答案 0 :(得分:2)
不要清理输入。而是在输出时对其进行编码。这很容易通过.net 4功能(&lt;%:“”%&gt;“)或代码审查来强制执行。
数据应以其原生格式存储。人类可读的文本的原生格式只是文本,而不是它的某些编码版本。您无法轻松操纵编码文本(例如,突出显示单词或替换)。
不对数据库中的文本进行编码甚至可以节省一点存储空间。
无论如何,消毒输入很难。除了编码所有内容之外,要做的事情非常困难。将HTML标记列入黑名单是忘记某些事情的某种方式,所以不要这样做。
答案 1 :(得分:0)
完全删除标记,或用其HTML实体(<
)替换>
和<
等任何特殊字符。无论您使用哪种服务器端语言,都可能已经具备了执行此操作的功能。例如,PHP的htmlspecialchars
或strip_tags
就可以解决这个问题。