所谓sql注入,就是通过把SQL命令插入到WEB表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。 我们永远不要信任用户的输入,我们必须认定用户输入的数据都是不安全的,我们都需要对用户输入的数据进行过滤处理
所谓sql注入,就是通过把SQL命令插入到WEB表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
我们永远不要信任用户的输入,我们必须认定用户输入的数据都是不安全的,我们都需要对用户输入的数据进行过滤处理。
//组织SQL指令:获取用户信息
$sql = "select * from {$this->getTable()} where u_username = "{$username}"";
第一种SQL注入:
当在前台用户名输入框中输入【" or 1#】后,即使数据库没有这个用户名,也能查出数据(全部数据)
第二种SQL注入:
当在前台用户名输入框中输入【" or 1-- 】后,即使数据库没有这个用户名,也能查出数据(全部数据),注意:--后面是有空格的
两种SQL注入本质上都是Mysql的注释引起的,在#和-- 后面的内容会被忽略,就容易被用户钻空子
-- SQL注入,要解决它,关键在于其后面的空格,只需在代码中用trim方法修饰用户名变量,那么-- SQL便不起作用了;
#SQL注入,要解决它,关键在于不安全字符的屏蔽,而由于我是在PHP遇到这种情况,所以我介绍一下php中解决#SQL注入的方法:
利用addslashes方法(为特殊字符增加斜杠,例如单引号、双引号、反斜线和NULL)修饰用户名变量
//防止SQL注入:通过特殊符号改变SQL指令
$username = addslashes($username);
以上就是我所提供的注释SQL注入的解决方案,若您有更好的,可随时在评论区与我沟通o__o
--结束END--
本文标题: Mysql经典SQL注入(注释法:# 或 --)
本文链接: https://lsjlt.com/news/6448.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-10-23
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0