将数据存储到 SQL,编码与否?

Lob*_*uno 5 c# sql asp.net

最佳实践是什么?我正在创建一个ASP.NET网站,用户可以在其中输入要存储在 SQL 数据库中的文本数据。我用来HttpUtility.HTNLEncode()存储数据并HTMLDecode显示它。

这很有效,但搜索(选择或自由文本)要困难得多。用户应该能够输入包含 <、"、' 和任何其他有问题的字符的文本。

最佳实践是什么?存储未编码的数据?那么如何降低注射风险呢?

mar*_*pet 6

始终将用户输入以未编码的形式存储在数据库中,并始终在输出之前对数据库中的用户输入进行编码。

您还应该在保留之前过滤/验证用户输入。

  • 输入:用户输入->验证/过滤->保存到数据库
  • 输出:数据库中的内容 -> 编码 -> 输出到客户端

这是使用和重用用户数据的唯一明智的方式。

另请参阅http://msdn.microsoft.com/en-us/library/t4ahd590%28v=vs.80%29.aspx#cpconbestsecuritypracticesforwebapplicationsanchor4 以及HTML 在持久化之前应该进行编码吗?

  • 存储时对数据进行*转义*以防止 SQL 注入,不要对其进行*编码*。 (3认同)
  • 我不认为这个问题是关于 SQL 注入的 - 为了防止这种情况,你应该使用参数化查询,而不是 HTMLEncode/HTMLDecode。 (2认同)