将表单请求直接传递给 Laravel/Eloquent 中的模型是否安全?
Is it safe to pass form request directly to model in Laravel/Eloquent?
我在 laravel..
之外使用 Laravel/Eloquent
对于某些用户场景,我需要编写自己的验证 Class,因为我没有使用所有 Laravel 组件..
所以我的问题是:
我应该关心 sql 在我的验证 Class 中注入吗?换句话说,下面的代码已经安全了吗?
//$user is an instance from a User Class extends Eloquent..
$user->username = $_REQUEST['username'];
是的,这就是保存,在这种情况下您不必担心 SQL 注入。最后执行这个方法:
https://github.com/laravel/framework/blob/5.2/src/Illuminate/Database/Query/Builder.php#L1819
如您所见,这里有绑定。 https://github.com/laravel/framework/blob/5.2/src/Illuminate/Database/ConnectionInterface.php
中使用了相同的绑定
最后这个方法:
https://github.com/laravel/framework/blob/5.2/src/Illuminate/Database/Connection.php#L381
将被执行 - 这是 PDO 准备语句,所以如您所见,您不必担心 SQL 注入。
当然,我总是建议验证数据以确保您获得预期的结果。您可能不希望使用 %
、^
等用户名字符,因此无论 SQL 注入
都应该使用验证
我在 laravel..
之外使用 Laravel/Eloquent对于某些用户场景,我需要编写自己的验证 Class,因为我没有使用所有 Laravel 组件..
所以我的问题是: 我应该关心 sql 在我的验证 Class 中注入吗?换句话说,下面的代码已经安全了吗?
//$user is an instance from a User Class extends Eloquent..
$user->username = $_REQUEST['username'];
是的,这就是保存,在这种情况下您不必担心 SQL 注入。最后执行这个方法:
https://github.com/laravel/framework/blob/5.2/src/Illuminate/Database/Query/Builder.php#L1819
如您所见,这里有绑定。 https://github.com/laravel/framework/blob/5.2/src/Illuminate/Database/ConnectionInterface.php
中使用了相同的绑定最后这个方法:
https://github.com/laravel/framework/blob/5.2/src/Illuminate/Database/Connection.php#L381
将被执行 - 这是 PDO 准备语句,所以如您所见,您不必担心 SQL 注入。
当然,我总是建议验证数据以确保您获得预期的结果。您可能不希望使用 %
、^
等用户名字符,因此无论 SQL 注入