SQL注入攻击防范:我从哪里开始
我希望使我的网站安全抵御SQL注入攻击。 有没有人有任何良好的链接,以使网站在ASP.NET站点(c#,Web表单)中抵御这些类型的攻击?
编辑:
我应该指出我正在使用entity framework
第一个也是最好的防线是不使用动态SQL 。
始终使用参数化查询 。
看一下有关SQL注入的OWASP页面 。
查看这些资源:
-
如何:在ASP.NET中保护SQL注入 (MSDN)
-
数据安全:在停止之前停止SQL注入攻击
-
SQL注入攻击和如何防范它们的一些技巧
-
防止ASP.NET中的SQL注入
基本上,正如Oded已经指出的那样,它归结为停止将SQL语句连接在一起 – 特别是如果涉及用户输入到文本框中的数据 – 并在ADO.NET中使用参数化查询 。
看看这里:
Bobby Tables:防止SQL注入的指南
这是一个很棒的系列,涵盖Web应用程序的十大安全威胁以及如何使用ASP.net缓解它们: http : //www.troyhunt.com/2010/05/owasp-top-10-for-net-developers -part-1.HTML
这很简单。 大多数注射漏洞都来自如下代码:
var myQuery="SELECT something FROM somewhere WHERE somefield="+userSuppliedData; //execute myQuery against db //now suppose userSuppliedData=="'';DROP TABLE somewhere;"
如果您像这样滚动sql语句,那么您将面临风险。 考虑使用ORM或参数化查询。
使用带参数的存储过程,尽可能避免使用内联SQL …
通过以下参数获取数据:
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";