我希望我的网站能够抵御SQL注入攻击。有没有人有任何良好的链接可以使网站在ASP.NET站点(c#,Web表单)中抵御这些类型的攻击?
编辑:
我应该指出我正在使用实体框架
答案 0 :(得分:14)
答案 1 :(得分:4)
请参阅以下资源:
基本上,正如Oded已经指出的那样,它可以归结为停止将SQL语句连接在一起 - 特别是如果这涉及用户输入到文本框中的数据 - 并在ADO.NET中使用参数化查询。 / p>
答案 2 :(得分:3)
答案 3 :(得分:2)
这是一个很棒的系列,涵盖Web应用程序的十大安全威胁以及如何使用ASP.net缓解它们:http://www.troyhunt.com/2010/05/owasp-top-10-for-net-developers-part-1.html
答案 4 :(得分:1)
这很容易。大多数注射漏洞都来自如下代码:
var myQuery="SELECT something FROM somewhere WHERE somefield="+userSuppliedData;
//execute myQuery against db
//now suppose userSuppliedData=="'';DROP TABLE somewhere;"
如果您像这样滚动sql语句,那么您将面临风险。考虑使用ORM或参数化查询。
答案 5 :(得分:0)
将存储过程与参数一起使用,并尽可能避免使用内联SQL ...
答案 6 :(得分:-1)
通过以下参数获取数据:
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";