大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说Mysql经典SQL注入(注释法:# 或 –)[亲测有效],希望您对编程的造诣更进一步.
所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
我们永远不要信任用户的输入,我们必须认定用户输入的数据都是不安全的,我们都需要对用户输入的数据进行过滤处理。
问题显现:
//组织SQL指令:获取用户信息
$sql = "select * from {$this->getTable()} where u_username = "{$username}"";
代码100分
第一种SQL注入:
当在前台用户名输入框中输入【” or 1#】后,即使数据库没有这个用户名,也能查出数据(全部数据)
第二种SQL注入:
当在前台用户名输入框中输入【” or 1– 】后,即使数据库没有这个用户名,也能查出数据(全部数据),注意:–后面是有空格的
解决方案:
两种SQL注入本质上都是Mysql的注释引起的,在#和– 后面的内容会被忽略,就容易被用户钻空子
— SQL注入,要解决它,关键在于其后面的空格,只需在代码中用trim方法修饰用户名变量,那么– SQL便不起作用了;
#SQL注入,要解决它,关键在于不安全字符的屏蔽,而由于我是在php遇到这种情况,所以我介绍一下PHP中解决#SQL注入的方法:
利用addslashes方法(为特殊字符增加斜杠,例如单引号、双引号、反斜线和NULL)修饰用户名变量
代码100分
//防止SQL注入:通过特殊符号改变SQL指令
$username = addslashes($username);
以上就是我所提供的注释SQL注入的解决方案,若您有更好的,可随时在评论区与我沟通o__o
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/8102.html