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";