zoukankan      html  css  js  c++  java
  • 【分享】SQL中的注入漏洞

    例:假设一个账户密码的输入在数据库中是这样进行判断的。

    SELECT (FPASSWORD = '123456' ) AS PWDCORRECT
    FROM T_USER
    WHERE FUSER= 'GUEST'

    如果输入:

    SELECT (FPASSWORD='1' OR '1'='1') AS PWDCORRECT
    FROM T_USER
    WHERE FUSER='ABC'

    因为 ‘1’=‘1’ 永远返回的是true 所以 这就造成了SQL 的注入漏洞。

    解决办法:

      ①:过滤敏感字符

      

    if(user.contains("or","and","select","delete"))
    {
        printf("可能存在注入漏洞攻击!");
    }

      ②使用参数化 SQL语句(推荐

      

    string user=textUser.getText();
    string password=textPassword.GetText();
    
    query=CreateQuery("SELECT (FPASSWORD= :PASSWORD) AS PWDCORRECT FROM T_USER WHERE F_USER=:USER");
    
    query.SetParameter(":PASSWORD",password);
    query.SetParameter(":USER",user);
    
    if(rs.getBool("PWDCORRECT")==TRUE){
      //密码正确  
    }
  • 相关阅读:
    spring MVC的启动过程详解
    BeanFactory和applicationContext之间的区别
    spring的事务管理
    通用Mybatis的Crud搭建
    spring的IOC原理
    spring的AOP原理
    TortoiseSVN使用简介
    SVN简明教程
    POJO
    velocity 框架
  • 原文地址:https://www.cnblogs.com/xiyin/p/5859868.html
Copyright © 2011-2022 走看看