Mysql经典SQL注入(注释法:# 或 –)[亲测有效]

Mysql经典SQL注入(注释法:# 或 –)[亲测有效]所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。 我们永远不要信任用户的输入,我们必须认定用户输入的数据都是不安全的…

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

(0)
上一篇 2023-03-07
下一篇 2023-03-07

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注