一直困扰着我的简单问题。
我应该立即对用户输入进行 HTML 编码并将编码后的内容存储在数据库中,还是应该在显示时存储原始值和 HTML 编码?
存储编码数据大大降低了开发人员在显示数据时忘记编码数据的风险。然而,存储编码数据会使数据挖掘变得更加麻烦,并且会占用更多空间,尽管这通常不是问题。
最佳答案
我强烈建议在输出时对信息进行编码。如果您希望更改在某个点查看原始数据的方式,那么将原始数据存储在数据库中是很有用的。流程应该类似于:
sanitize user input -> protect against sql injection -> db -> encode for display
考虑一下您可能希望将信息显示为 RSS 提要的情况。在重新显示之前必须重做任何特定于 HTML 的编码似乎有点愚蠢。任何开发都应始终遵循“不要相信输入”的模因,无论该输入是来自用户还是来自数据库。
关于HTML 在存储或显示时对用户输入进行编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/223480/