清理稍后将出现在HTML中的输入

Sanitizing input that will later appear in HTML

本文关键字:HTML 输入      更新时间:2023-09-26

我有一个<textarea>,其值被发送到服务器并存储在数据库中。这个值随后在HTML的不同页面上呈现。

我需要做些什么来消毒这个?只是删除HTML标签?(它已经是sql注入安全的,因为我使用了存储过程和参数。)

有人有消毒程序吗?

不要清理输入。而是在输出时对其进行编码。这很容易通过。net 4的特性(<%: " %>)或代码审查来实现。

数据应该以其原生格式存储。人类可读文本的原生格式只是文本,而不是某种编码版本。您不能轻松地操作已编码的文本(例如对单词进行高亮显示或替换)。

在数据库中不编码文本甚至可以节省一点存储空间。

对输入进行消毒是很困难的。除了对所有内容进行编码之外,很难做更多的事情。把HTML标签列入黑名单会让你忘记一些东西,所以不要这样做。

要么完全删除标签,要么用它们的HTML实体(&lt;)替换任何特殊字符,如<>。无论您使用的是哪种服务器端语言,都可能已经有了这样做的函数。例如,PHP的htmlspecialcharsstrip_tags就可以做到。