嗨,我想知道是否有人知道一些好的网站,详细介绍了 .NET Web 应用程序的 SQL 注入预防。任何资源将不胜感激,谢谢。
Oliver S
问问题
533 次
5 回答
5
我认为,如果您搜索一下“防止 .NET 中的 sql 注入”,您会发现很多很好的资源。:)
无论如何,一件非常重要的事情是不要使用字符串连接来构建查询。相反,使用参数化查询。ADO.NET 允许以非常简单的方式做到这一点:
string sql = "SELECT * FROM Persons WHERE Persons.Lastname LIKE @p_Name";
SqlCommand cmd = new SqlCommand (sql);
cmd.Parameters.Add ("@p_Name", SqlDbType.Varchar).Value = textBox1.Text + "%";
于 2009-02-12T15:00:53.447 回答
1
如果您使用 SqlCommand.Parameters 集合来传递参数并且从不将用户文本注入到您的 Sql 查询文本中,则没有风险。
于 2009-02-12T15:00:24.133 回答
1
- 黄金法则:永远不要连接用户输入
- 如果您在 .NET 中编写自己的命令字符串,请使用参数集合
- 如果您使用 LINQ,它通常会为您完成
- 如果您在 TSQL 中编写命令,请使用 sp_executesql或您的供应商的等价物
于 2009-02-12T15:03:25.297 回答
0
首先要知道的是参数化您的查询或使用存储过程......
永远不要在只附加值的代码中使用 ad-hoc sql
仅授予读写权限(或仅读取那些不应写入的页面)
于 2009-02-12T15:01:41.557 回答
0
MSDN 杂志文章Stop SQL Injection Attacks Before they Stop You似乎相当完整。
SDL Embraces The Web虽然包含关于您的特定问题的不太详细的信息,但它是除了防止 SQL 注入攻击之外您应该考虑的其他事情的一个很好的来源。
通常的免责声明适用,我不一定同意这些文章中提供的所有信息,但所提供的信息有望让您思考如何在公共网站上缓解 SQL 注入(和其他)攻击。
于 2009-02-12T15:51:08.320 回答