HTML 在存储或显示时对用户输入进行编码

标签 html security xss html-encode

一直困扰着我的简单问题。

我应该立即对用户输入进行 HTML 编码并将编码后的内容存储在数据库中,还是应该在显示时存储原始值和 HTML 编码?

存储编码数据大大降低了开发人员在显示数据时忘记编码数据的风险。然而,存储编码数据会使数据挖掘变得更加麻烦,并且会占用更多空间,尽管这通常不是问题。

最佳答案

我强烈建议在输出时对信息进行编码。如果您希望更改在某个点查看原始数据的方式,那么将原始数据存储在数据库中是很有用的。流程应该类似于:

sanitize user input -> protect against sql injection -> db -> encode for display

考虑一下您可能希望将信息显示为 RSS 提要的情况。在重新显示之前必须重做任何特定于 HTML 的编码似乎有点愚蠢。任何开发都应始终遵循“不要相信输入”的模因,无论该输入是来自用户还是来自数据库。

关于HTML 在存储或显示时对用户输入进行编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/223480/

相关文章:

php - 内容数据库 - 可以存储 HTML 吗?

java - Paypal Java SDK - 尝试创建加密按钮 - 不起作用,找不到文档

rest - 有什么安全的方法可以在 SPA 的客户端保留 rest auth token 吗?

java - 使用 SafeHtml 进行 anchor

javascript - 如何使用 Javascript 计算正确答案的数量?

api - 如何防止任何人向我的服务器发送请求?

jquery - 如何 iframe 。内容窗口。文档 。 execCommand 工作?

c# - 在 WebMatrix 中使用 Razor 是否可以减轻 XSS 威胁?

html - 绝对定位的元素——它们可以在相对定位的 sibling 或 parent 之下吗?

javascript - 单击按钮迭代图像