为什么此段代码中,Eloquent ORM无法防SQL注入
文档中提到,筛选数据时,使用查询构造器的where可以防止sql注入
在实际操作中,发现无法实现,是不是我的写法有问题
预想中返回$data为空,但实际上还是返回了id=34的用户数据
Route::get('test/{id}', function ($id) {
//假如接收的id为这个内容
$id = "34 and exists (select * from admins where name = 'admin')";
$data = User::query()->where('id',$id)->first();
dd($data);
});
laravel首先进行处理 到mysql 就是 id = '34 and...' 这种格式, 然后对于int类型的数据 搜索 id = '123abc' 会在底层处理为 id = 123 继续执行
(以上如果我没记错的话,全凭印象)