zoukankan      html  css  js  c++  java
  • SQL注入

    sql注入定义:

    用户可控参数中注入sql语法,破坏原有sql结构,到达编写程序之外结果的共计行为。

    产生原因:

    1、使用字符串拼接的形式构造sql.

    2、未对用户可控参数检查过滤接入到sql语句中。

    举例万能密码的原理了解sql注入:

    所有程序都有一个登陆框,提供给用户输入用户名和密码,我们在拿到用户输入的用户名密码参数进行数据库匹配,找到数据后我们给用户登陆成功,当然我们现在都已经做了防止sql注入的预防,比如在mybatis框架中xml的sql语句中对于用户可控参数传入sql中是我们用的是#{参数}而非${参数},这就是泛指sql注入的一种体现,只不过以前人云亦云,如今却能明白整个过程,我们举一例mysql数据库实现用户登录在没有做防止sql注入时的万能密码:(登录界面就不再画了)

    这是我们数据库现有的employee表数据:

    按照正常的用户输入account和password,用户传参account = ckx,password = 111传到sql中:

     select * from employee where account = 'ckx' and password = '111';

    而当用户输入account = ‘ or 1=1 # ,password 随便输入或者不输入,会产生什么情况?这时如果我们没有做预防sql注入分析:

    这种情就可以获取MySQL数据库的employee表的所有用户,因为匹配到数据,程序就会给登录成功!

    这就是万能钥匙sql注入的一个简单说明。

    关于预防:

    1、对用户可控参数保持警惕

    2、只有客户端的验证等于没有验证

    3、不要把错误信息暴漏给用户

    4、sql注入不仅仅可以通过输入框,还有url

    5、除了服务器页面错误,还有其他方式获取数据库信息

    6、通过软件模拟注入,速度快。

     

  • 相关阅读:
    RS错误RSV-VAL-0032之项目未在布局中引用的3种解决办法
    Cognos访问权限之让拒绝更友善
    SSIS包部署错误之运行环境设置
    RS开发中的一些小技巧[不定期更新]
    RS布局问题之块的不完美之完美
    Zuul使用Ribbon配置自动重试
    Eureka集群试验的一点总结
    centos 6.4 调整home和root分区大小
    ribbon区域亲和配置一例
    SpringMVC 类内部的RequestMapping注解能否被继承?
  • 原文地址:https://www.cnblogs.com/ckxlovejava/p/7535182.html
Copyright © 2011-2022 走看看