【发布时间】:2012-02-28 02:10:04
【问题描述】:
我希望让我的网站免受 SQL 注入攻击。有没有人有任何好的链接可以使网站免受 ASP.NET 网站(c#、网络表单)中这些类型的攻击?
编辑:
我应该指出我正在使用实体框架
【问题讨论】:
标签: c# asp.net entity-framework sql-injection
我希望让我的网站免受 SQL 注入攻击。有没有人有任何好的链接可以使网站免受 ASP.NET 网站(c#、网络表单)中这些类型的攻击?
编辑:
我应该指出我正在使用实体框架
【问题讨论】:
标签: c# asp.net entity-framework sql-injection
通过以下参数获取数据:
string str = "insert into CustomerHistoryDD(logo,ceoPicture,ceoProfilePicture,coverPhoto,employee1,employee2,employee3,employee4) values(@param1,@param2,@param3,@param4,@param5,@param6,@param7,@param8)";
SqlCommand cmd = new SqlCommand(str, con);
con.Open();
cmd.Parameters.AddWithValue("@param1", link);
cmd.Parameters.AddWithValue("@param2", link1);
cmd.Parameters.AddWithValue("@param3", link2);
cmd.Parameters.AddWithValue("@param4", link3);
cmd.Parameters.AddWithValue("@param5", tb_Emp1.Text);
cmd.Parameters.AddWithValue("@param6", tb_Emp2.Text);
cmd.Parameters.AddWithValue("@param7", tb_Emp3.Text);
cmd.Parameters.AddWithValue("@param8", tb_Emp4.Text);
cmd.ExecuteNonQuery();
con.Close();
lbl_msg.Text = "Data Saved Successfully";
【讨论】:
这很容易。大多数注入漏洞来自如下代码:
var myQuery="SELECT something FROM somewhere WHERE somefield="+userSuppliedData;
//execute myQuery against db
//now suppose userSuppliedData=="'';DROP TABLE somewhere;"
如果您像这样手动滚动 sql 语句,您将处于危险之中。考虑使用 ORM 或参数化查询。
【讨论】:
使用带参数的存储过程并尽可能避免使用内联 SQL...
【讨论】:
查看这些资源:
基本上,正如 Oded 已经指出的那样,它归结为停止将您的 SQL 语句连接在一起 - 特别是如果这涉及用户在文本框中输入的数据 - 并在 ADO.NET 中使用 参数化查询。
【讨论】:
这是一个很棒的系列,涵盖了 Web 应用程序的 10 大安全威胁以及如何使用 ASP.net 缓解这些威胁:http://www.troyhunt.com/2010/05/owasp-top-10-for-net-developers-part-1.html
【讨论】:
【讨论】: