#database #laravel #code-injection
Вопрос:
Недавно я читал о SQL-инъекциях, и я хотел бы знать, подвержен ли подобный код ошибочным запросам.
DB::table($table)->select('*')->where('nome', 'LIKE', '%' . $_GET['search'] . '%')->get()
Большое спасибо.
Комментарии:
1. Нет, это не так.
$_GET['search']
будет экранирован, если вы используетеwhere()
функцию. Вы все равно должны проверять вводимые пользователем данные, когда это возможно, но вам нужно беспокоиться о внедрении SQL только при использовании необработанных функций. (DB::raw()
,selectRaw()
,whereRaw()
,groupByRaw()
иhavingRaw
). И даже в этом случае эти функции предоставляют способы избежать пользовательского ввода.2. @IGP Я считаю, что переменные на самом деле превращаются в подготовленные операторы, что отличается от экранирования и даже более безопасно.
3. Они являются. Я просто не думал, что это что-то другое.
4. Спасибо, ребята, это действительно помогло мне.