您的位置:首页 > 数据库

【分享】SQL中的注入漏洞

2016-09-10 17:38 387 查看
例:假设一个账户密码的输入在数据库中是这样进行判断的。

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){
//密码正确
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: