SQL注入攻击防范:我从哪里开始

时间:2012-02-06 15:51:30

标签: c# asp.net entity-framework sql-injection

我希望我的网站能够抵御SQL注入攻击。有没有人有任何良好的链接可以使网站在ASP.NET站点(c#,Web表单)中抵御这些类型的攻击?

编辑:

我应该指出我正在使用实体框架

7 个答案:

答案 0 :(得分:14)

第一道也是最好的防线是不使用dynamic SQL

始终使用parameterized queries

查看OWASP page about SQL Injection

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