Ответ 1
yes Eloquent использует привязку параметров за сценой, которая безопасно избегает любого ввода, используемого в where().
В моем контроллере у меня есть этот код:
public function create($brand_id)
{
Brand::findOrFail($brand_id);
}
и это:
public function search()
{
$q = Input::get('q');
$brands = Brand::where('title', 'LIKE', '%'.$q.'%')->take(80)->get();
Безопасен ли этот код? Под "безопасным" я подразумеваю безопасную SQL-инъекцию. Или мне нужно сделать какую-то переменную здесь? И что является лучшим способом для очистки ввода пользователя? Большое спасибо за помощь мне:)
yes Eloquent использует привязку параметров за сценой, которая безопасно избегает любого ввода, используемого в where().
В документе говорится, что Eloquent обрабатывает это за сценой, но вы также можете использовать как DB::escape($q)
для более безопасной стороны
очистить то и то от параноика человеку, чтобы быть в безопасности.
Да, но обратите внимание, что не все параметры безопасны в операторе where:
public function search()
{
$col = Input::get('col');
$brands = Brand::where($col, 'LIKE', '%sql injection in column name%')->take(80)->get();
В этом случае SQL инъекция возможна!
Первый параметр: имя столбца не проверено или не проверено, и здесь возможна инъекция sql, убедитесь, что вы защитите это должным образом!