最佳实践是什么?我正在创建一个ASP.NET网站,用户可以在其中输入要存储在 SQL 数据库中的文本数据。我用来HttpUtility.HTNLEncode()存储数据并HTMLDecode显示它。
这很有效,但搜索(选择或自由文本)要困难得多。用户应该能够输入包含 <、"、' 和任何其他有问题的字符的文本。
最佳实践是什么?存储未编码的数据?那么如何降低注射风险呢?
始终将用户输入以未编码的形式存储在数据库中,并始终在输出之前对数据库中的用户输入进行编码。
您还应该在保留之前过滤/验证用户输入。
这是使用和重用用户数据的唯一明智的方式。
另请参阅http://msdn.microsoft.com/en-us/library/t4ahd590%28v=vs.80%29.aspx#cpconbestsecuritypracticesforwebapplicationsanchor4 以及HTML 在持久化之前应该进行编码吗?