【问题标题】:SQL Injection attack prevention: where do I startSQL 注入攻击预防:我从哪里开始
【发布时间】:2012-02-28 02:10:04
【问题描述】:

我希望让我的网站免受 SQL 注入攻击。有没有人有任何好的链接可以使网站免受 ASP.NET 网站(c#、网络表单)中这些类型的攻击?

编辑:

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

【问题讨论】:

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


    【解决方案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";
    

    【讨论】:

      【解决方案2】:

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

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

      如果您像这样手动滚动 sql 语句,您将处于危险之中。考虑使用 ORM 或参数化查询。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

          【讨论】:

            【解决方案5】:

            查看这些资源:

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

            【讨论】:

              【解决方案6】:

              这是一个很棒的系列,涵盖了 Web 应用程序的 10 大安全威胁以及如何使用 ASP.net 缓解这些威胁:http://www.troyhunt.com/2010/05/owasp-top-10-for-net-developers-part-1.html

              【讨论】:

              【解决方案7】:

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

              始终使用parameterized queries

              看看OWASP page about SQL Injection

              【讨论】:

                猜你喜欢
                • 2013-04-13
                • 2011-01-02
                • 1970-01-01
                • 1970-01-01
                • 2011-05-15
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多