首页 > 代码库 > 【分享】SQL中的注入漏洞

【分享】SQL中的注入漏洞

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

SELECT (FPASSWORD = 123456 ) AS PWDCORRECTFROM T_USERWHERE FUSER= GUEST

如果输入:

SELECT (FPASSWORD=1 OR 1=1) AS PWDCORRECTFROM T_USERWHERE 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){  //密码正确  }

 

【分享】SQL中的注入漏洞