当前位置: 首页 > 面试题库 >

有什么好的方法可以防止SQL注入?

夏和雅
2023-03-14
问题内容

我必须为我的OJT公司编程一个应用程序管理系统。前端将在C#中完成,后端将在SQL中完成。

现在,我从来没有做过这样的项目。在学校里,我们只有关于SQL的基本课程。不知何故,我们的老师完全没有讨论SQL注入,而我直到现在才通过网上阅读与之接触。

所以无论如何,我的问题是:如何防止C#中的SQL注入?我模糊地认为,可以通过适当地屏蔽应用程序的文本字段来做到这一点,以使其仅接受指定格式的输入。例如:电子邮件文本框的格式应为“
example@examplecompany.tld”。这种方法足够了吗?还是.NET具有可处理此类内容的预定义方法?我可以将过滤器应用于文本框,使其仅接受电子邮件地址格式或名称文本框,使其不接受特殊字符吗?


问题答案:

通过使用参数SqlCommand及其子参数集合,您可以摆脱所有检查sql注入的麻烦,这些麻烦将由这些类来处理。

这是一个示例,摘自以上文章之一:

private static void UpdateDemographics(Int32 customerID,
    string demoXml, string connectionString)
{
    // Update the demographics for a store, which is stored  
    // in an xml column.  
    string commandText = "UPDATE Sales.Store SET Demographics = @demographics "
        + "WHERE CustomerID = @ID;";

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlCommand command = new SqlCommand(commandText, connection);
        command.Parameters.Add("@ID", SqlDbType.Int);
        command.Parameters["@ID"].Value = customerID;

        // Use AddWithValue to assign Demographics. 
        // SQL Server will implicitly convert strings into XML.
        command.Parameters.AddWithValue("@demographics", demoXml);

        try
        {
            connection.Open();
            Int32 rowsAffected = command.ExecuteNonQuery();
            Console.WriteLine("RowsAffected: {0}", rowsAffected);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
}


 类似资料:
  • 问题内容: 想象一下具有滚动级别的太空射击游戏。有哪些方法可以防止恶意玩家修改游戏以使其受益?他可以做的很难限制服务器端的事情是自动瞄准,在可见区域外偷看,加速黑客攻击等。 有什么方法可以防止这种情况发生?假定服务器是任何语言,并且客户端通过WebSocket连接。 始终假定代码是100%可入侵的。想办法防止客户完全重写(出于作弊目的)作弊。这些可能是诸如编写安全游戏协议的方法,服务器端检测等。

  • 问题内容: 我有很多自定义的javascript和布局设计,并且我想阻止人们使用它们。有什么实际的方法可以做到这一点,还是我基本上只需要高兴我的php代码不显示?我至少要使复制网站变得困难。 问题答案: 如果人们真的想访问您的源代码,他们可以很轻松地做到这一点。 通过混淆代码,可以在一定程度上降低人员的速度。 维护混淆的代码很困难。您要做的是在部署之前对其进行模糊处理,以便可以使用常规版本进行测试

  • 本文向大家介绍Pyhton中防止SQL注入的方法,包括了Pyhton中防止SQL注入的方法的使用技巧和注意事项,需要的朋友参考一下 注意,上面的SQL字符串与后面的tuple之间的分隔符是逗号,平时拼写SQL用的是%。 如果按照以下写法,是容易产生SQL注入的: 这个和PHP里的PDO是类似的,原理同MySQL Prepared Statements。 Python Using the Pytho

  • 问题内容: 我的想法是通过C#(3.5)Winforms应用程序通过MySQL .NET Connector 6.2.2与MySQL数据库创建一些通用类,以用于Insert / Update / Select。 例如: 然后,我可以从程序的任何位置通过传递SQL查询字符串来在有/无用户输入的情况下运行查询。 对SO的阅读开始给我指示,这可能会导致SQL注入攻击(对于任何用户输入值)。无论如何,要清

  • 本文向大家介绍php防止sql注入的方法详解,包括了php防止sql注入的方法详解的使用技巧和注意事项,需要的朋友参考一下 一、什么是SQL注入式攻击?   所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQ

  • 问题内容: 在http://www.justinshattuck.com/2007/01/18/mysql-injection-cheat- sheet/?akst_action=share- this上 ,有一节声称您可以使用某些亚洲字符编码绕过mysql_real_escape_string 用BIG5或GBK绕过mysql_real_escape_string() “注入线” に关する追加情