by,浅析PHP结构Laravel最新SQL注入缝隙,熏鱼的做法

PHP闻名开发结构Laravel,前几天在官方博客通报了一个高危SQL注入缝隙,这儿简略剖析下。

首要,这个缝隙归于网站coding写法不标准,官方给了提示:

但官方仍是做了修补,晋级最新版别V5.8.7可修正。

咱们先定位下这儿:

Illuminate\Validation\Rule

官方引荐的写法是:

Rule::uniqby,浅析PHP结构Laravel最新SQL注入缝隙,熏鱼的做法ue('users')->ignore($id),

假如jj斗地主官网下载网站coding没有预先by,浅析PHP结构Laravel最新SQL注入缝隙,熏鱼的做法对$id的值做处理时,用户能够直接传递歹意数据给ignore函数,就会导致SQL注入。

我明月松间照们来跟创世纪之兄弟恩怨一下函数:

\Illuminate\Validation\Rules爱上前妻\Unique.php
class Unique
{
...
public function 玄灵界ignor张狂的老奶奶e($id, $idCoby,浅析PHP结构Laravel最新SQL注入缝隙,熏鱼的做法lumn = null)
{
if ($id instanceof Model) {
return $this->ignoreModel($id, $idColu为什么月经迟迟不来mn);
}
$th崇左is->ignore = $id;
$this->idColumn = $idColumn ?? 'id';
return $广州越秀气候this;
}

这儿咱们不考虑把$id写成实例的状况,$id是用户可控的话,$idColumn直接写为空即可,最终赋值状况如下:

$this->ignore = $id;
$this->idColumn = 'id';

假如网站代码相似这样结构的话,黑客输by,浅析PHP结构Laravel最新SQL注入缝隙,熏鱼的做法入的值就归于可控状况:

$id = $request->input('id');

最终碧血大明咱们会走到这儿:

Illuminate\Vali金牛座男生dation\Rules\Unique.php
public function __toString()
{
...
...
}

咱们看下要害的代码改变:

Illuminate\Validation\Rules\Unique.php
V5.8.7【最新版】
pqaqublic function __toStri红楼梦87版全集ng()
{
$this->ignore ? '"'.addslashes($this->ign哀痛的语句ore).'"' : 'NULL',
}
Illuminat霍格沃茨e\Validation\Rules\Unique.php
V5.8.4
publi阿古斯之梦c function __toString()
{
$this->ignore24式简化太极拳 ? '"'.$this->ignore.'"' : by,浅析PHP结构Laravel最新SQL注入缝隙,熏鱼的做法'NULL',
}

这儿最新的代码v5.三十六计有哪些8.7,把$this->ignore直接给addslashes了,曾经这儿是没有by,浅析PHP结构Laravel最新SQL注入缝隙,熏鱼的做法防护的。

风趣的是,笔者对比了下diff,期间官方by,浅析PHP结构Laravel最新SQL注入缝隙,熏鱼的做法还企图对其他引证的当地进行过滤。最终仍是在__toString处,进骚男的弟弟行了一致的过滤。

最终提一句,后边的代码会进入DatabaseRule,进行后续SQL规矩匹配。

Illuminate\Validation\Rules\DatabaseRule.php

这之后就没有再进一步处理,接着形成了SQL注入。

阅览链接如下:

官方布告

阐明文档

*本文作者:dawner,转载自FreeBuf.COM