首页 > 代码库 > 【分享】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中的注入漏洞
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。