gpt4 book ai didi

php - 清理数据库存储过程调用/查询生成器/ Eloquent 用户输入

转载 作者:行者123 更新时间:2023-11-29 00:03:46 25 4
gpt4 key购买 nike

我正在使用 laravel,我的数据库调用如下。

有些地方,我用的是Eloquent

$model = new UserModel(Input::all())
$model->save();

在某些地方,我正在使用查询生成器

$users = DB::table('Users')->where('ID', $id)->get();

在某些地方,我使用了存储过程

DB::statement('CALL usp_AddUser("' . $iName . '","' . $iDomain . '","' . $iAlias . '",@oMessage)');

laravel 是否会为上述 3 种场景清理用户输入?使用 htmlspecialchars() 简单地转义用户输入就足够了吗?

最佳答案

您的 DB::statement 调用是不安全的(假设 $iName 等来自用户/不安全输入 - 它相对如果这些值仅来自您的代码并且您对它们很小心,则安全)。其他两个都很好。

htmlspecialchars 不会为 SQL 转义,它会为 HTML 转义,这是一组完全独立的规则。

DB::statement 将允许使用 PDO 占位符,以确保安全:

DB::statement('CALL usp_AddUser(:iName, :iDomain, :iAlias, @oMessage)', ['iName' => $iName, 'iDomain' => $iDomain, 'iAlias' => $iAlias]);

DB::statement('CALL usp_AddUser(?, ?, ?, @oMessage)', [$iName, $iDomain, $iAlias]);

关于php - 清理数据库存储过程调用/查询生成器/ Eloquent 用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28457551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com