Как предотвратить инъекцию SQL в Laravel?

в моем контроллере у меня есть этот код:

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-инъекцию. Или я должен сделать какую-то переменную здесь? И каков наилучший способ очистки пользовательского ввода? Большое спасибо за помощь:)

2 ответов


yes Eloquent использует привязку параметров за сценой, которая безопасно избегает любого ввода, используемого в where().


документ говорит, что Eloquent обрабатывает это за сценой, но вы также можете использовать like DB::escape($q) чтобы быть в безопасной стороне