首页 » 网站建设 » phpfilter防注入技巧_php手把手教你做网站三十七防止sql注入的填补

phpfilter防注入技巧_php手把手教你做网站三十七防止sql注入的填补

访客 2024-12-16 0

扫一扫用手机浏览

文章目录 [+]

图1 添加input判断

这里的浸染便是要判断input,参数是自己定义的,对应的是下边的if ($this->webscan_post);

phpfilter防注入技巧_php手把手教你做网站三十七防止sql注入的填补

如果不是利用的该类判断,也要查看一下是否可以防止注入。

phpfilter防注入技巧_php手把手教你做网站三十七防止sql注入的填补
(图片来自网络侵删)

原来的判断格式:

if ($this->webscan_post) { foreach ($_POST as $key => $value) { if ($this->webscan_StopAttack($key, $value, $postfilter, "POST")) return true; } }

利用对应的格式添加如下判断:

if ($this->webscan_input) { foreach (input('post.') as $key => $value) { if ($this->webscan_StopAttack($key, $value, $postfilter, "POST")) return true; } } if ($this->webscan_input) { foreach (input('get.') as $key => $value) { if ($this->webscan_StopAttack($key, $value, $getfilter, "GET")) return true; } }

图3 修正往后,已经可以判断sql注入

以上岸后台账号为例:

如果验证账号密码是下边的格式,是可以绕过验证的。

$con=" user_name='".trim(input('post.user_name')."' and password='".md5(trim(input('post.password')))."'";$data = Db::name("admin")->field("role,user_name")->where($con)->find();

上岸后台:

图2 sql注入上岸

解释:

账号利用admin ' or '1=1 # 个中admin 任意,密码任意,即可上岸账号。

如下修正,不会被绕过:

$con['user_name'] = trim(input('post.user_name')); $con['password'] = md5(trim(input('post.password'))); $data = Db::name("admin")->field("role,user_name")->where($con)->find();

打印了语句,创造英文单引号变成了\',被转义了。

标签:

相关文章