我正在使用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()简单地逃避用户输入是否足够?
答案 0 :(得分:1)
您的DB::statement
电话不安全(假设$iName
等来自用户/不安全的输入 - 如果这些值仅来自您的代码,则相对安全你小心他们)。其他两个都很好。
htmlspecialchars
不会转义,它会为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]);