Laravel 将验证结果直接传递给新对象是否安全
我已设置以下请求类来验证我的输入:Laravel 将验证结果直接传递给新对象是否安全,laravel,validation,security,code-injection,laravel-6,Laravel,Validation,Security,Code Injection,Laravel 6,我已设置以下请求类来验证我的输入: . . . class SupplierStoreRequest extends FormRequest { . . . public function rules() { return [ 'name' => 'required|string|max:255', 'address' => 'required|string|max:255',
.
.
.
class SupplierStoreRequest extends FormRequest
{
.
.
.
public function rules()
{
return [
'name' => 'required|string|max:255',
'address' => 'required|string|max:255',
];
}
}
我的控制器中有以下方法:
public function store(SupplierStoreRequest $request)
{
$validated = $request->validated();
$supplier = new Supplier($validated);
$supplier->save();
return redirect()->route('Admin::supplier.index');
}
这完全符合预期。我的问题是:
此代码中是否存在SQL或JavaScript注入风险,或任何其他安全风险,或者FormRequest类是否解决了这些风险?TL;DR通过雄辩和通过刀片变量使用
htmlspecialchars
转义来准备语句,这就是如何防止SQL注入和JavaScript注入。验证仅用于检查用户输入是否为预期格式(甚至可以是JavasScript或SQL格式)。
如果使用雄辩的语句(没有raw
),则使用预先准备好的语句,这有助于防止SQL注入。验证不是此过程的一部分,只是为了检查输入的有效性,而不是攻击本身
Laravel的数据库查询生成器提供了方便、流畅的
创建和运行数据库查询的接口。它可以用来
在应用程序中执行大多数数据库操作,并在所有
支持的数据库系统
Laravel查询生成器使用PDO参数绑定来保护
针对SQL注入攻击的应用程序。没有必要打扫
作为绑定传递的字符串
对于JavaScript注入,在刀片文件中使用{{$var}}
语句时也适用同样的情况。您不应仅依靠验证来防止攻击。通过验证来防止所有形式的攻击是非常非常非常困难的
Blade{{}语句通过PHP的
htmlspecialchars用于防止XSS攻击
我接受了你的回答。但要明确的是,您基本上是说代码很好,但不是因为验证。如果是这样的话,那么如果你在回答中直接说明这一点可能会很有用