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攻击


我接受了你的回答。但要明确的是,您基本上是说代码很好,但不是因为验证。如果是这样的话,那么如果你在回答中直接说明这一点可能会很有用