• SQL注入,Hacker入侵数据是如何做到的


    什么是SQL注入?

      SQL注入就是未将代码与数据进行严格的隔离,导致在读取用户数据的时候,错误地把黑客注入的数据作为代码的一部分执行。

      SQL注入自诞生以来以其巨大的杀伤力闻名。

      

      例子:

        典型的SQL注入的例子是当对SQL语句进行字符串拼接操作时,直接使用未加转义的用户输入内容作为变量,比如:

          var testCondition;

          testCondition = Request.form("testCondition");

          var sql = "select  * from TableA where id ='" + testCondition +"'";

        在上面的例子中,如果用户输入的ID只是一个ID字段是没有问题的,可以执行正常的查询语句。但如果使用“;”隔开,在testCondition里插入

    其他SQL语句,则会带来意想不到的结果,比如drop、delete等。

        曾经在某业务中,用户修改签名的时候,非常偶然地输入“#--!#(@这样的内容来表达心情,、单击保存后出发数据库更新。由于该业务未

    对危险字符串“#--”进行转义,导致where后面的信息被注释掉,执行语句变成:

          update tableB set nick =""#--!#(@“ where user_id=12345

        该SQL语句的执行导致全库的nick字段都被更新。所以,SQL注入的危害不必赘述,注入的原理也非常简单。

    如何预防?

      ①过滤用户输入参数中的特殊字符,从而降低被SQL注入的风险。

      ②禁止通过字符串拼接的SQL语句,严格使用参数绑定传入的参数。

      ③合理使用数据库访问矿机提供的防注入机制。比如MyBatis提供的#{}绑定参数,从而防止SQL注入。同时谨慎使用${},${}相当于使用字符串拼接

    SQL。拒绝拼接的SQL语句,使用参数化的语句。

      总之,一定要建立对注入式攻击的风险意识,正确使用参数化绑定SQL变量,这样才能有效地避免SQL注入。实际上,其他的注入方式也是类似的

    思路,身为一个开发工程师,我们一定要时刻保持对注入式攻击的高度警惕。

    Copyright © 2021 Shinoburedo
  • 相关阅读:
    hdoj:2075
    hdoj:2072
    hdoj:2071
    hdoj:2070
    hdoj:2069
    test001
    hdoj:2067
    hdoj:2061
    hdoj:2058
    hdoj:2057
  • 原文地址:https://www.cnblogs.com/xiaro115/p/10481356.html
Copyright © 2020-2023  润新知