Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQL注入攻击预防:从哪里开始_C#_Asp.net_Entity Framework_Sql Injection - Fatal编程技术网

C# SQL注入攻击预防:从哪里开始

C# SQL注入攻击预防:从哪里开始,c#,asp.net,entity-framework,sql-injection,C#,Asp.net,Entity Framework,Sql Injection,我希望我的网站能够安全地抵御SQL注入攻击。在ASP.NET网站(c#,web表单)中,是否有任何好的链接可以使网站免受这些类型的攻击 编辑: 我应该指出,在我使用实体框架时,第一条也是最好的防线是不要使用 始终使用 请看。这是一个很棒的系列,涵盖了web应用程序的十大安全威胁以及如何使用ASP.net缓解这些威胁:请参阅以下参考资料: (MSDN) 基本上,正如Oded已经指出的那样,它可以归结为停止将SQL语句连接在一起——特别是当这涉及到用户输入文本框的数据时——并在ADO.NE

我希望我的网站能够安全地抵御SQL注入攻击。在ASP.NET网站(c#,web表单)中,是否有任何好的链接可以使网站免受这些类型的攻击

编辑:


我应该指出,在我使用实体框架时,第一条也是最好的防线是不要使用

始终使用


请看。

这是一个很棒的系列,涵盖了web应用程序的十大安全威胁以及如何使用ASP.net缓解这些威胁:

请参阅以下参考资料:

  • (MSDN)

基本上,正如Oded已经指出的那样,它可以归结为停止将SQL语句连接在一起——特别是当这涉及到用户输入文本框的数据时——并在ADO.NET中使用参数化查询


使用带参数的存储过程,尽可能避免使用内联SQL…

这很简单。大多数注入漏洞来自如下代码:

var myQuery="SELECT something FROM somewhere WHERE somefield="+userSuppliedData;
//execute myQuery against db
//now suppose userSuppliedData=="'';DROP TABLE somewhere;"

如果您像这样手动滚动sql语句,您就有风险。考虑使用ORM或参数化查询。

< P>通过如下参数获取数据:

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

我倾向于链接到这些电子书。但只有一个漏洞是OP询问的SQL注入。好的观点-添加->