Я использую paginateметод построителя запросов и хочу, чтобы пользователь мог выбирать количество элементов на странице.
$paginate= Model::paginate($request->input('per_page'));
Делая это, я могу открыть лазейку SQL Injectionили это значение сначала очищается?
Решение проблемы
Такие методы должны быть защищены. Вот для чего нужны модели.
Но вы правы, лучше перестраховаться и проверить свои помещения. Особенно это касается популярных фреймворков, потому что иногда создатели жаждут простоты превыше всего, часто забывая даже о безопасности.
Но кажется, что в этом случае Laravel QueryBuilder приводит значение к perPageцелому числу, что делает его невосприимчивым к SQL-инъекциям:
protected function compileOffset(Builder $query, $offset)
{
return 'offset '.(int) $offset;
}
Потом я немного покопался в истории, и обнаружил, что защита была добавлена почти десятилетие назад, так что можно быть уверенным, что с любой поддерживаемой версией Laravel эта часть безопасна.
Тем не менее, проверка пользовательского ввода по-прежнему является хорошей идеей. Даже будучи защищенным от SQL-инъекций, вы не хотите никакого неожиданного поведения. Я не думаю, 500000что -100это хорошие ценности. Если вы видите, что данные недействительны, это хорошая стратегия, чтобы сразу выйти из строя, не дожидаясь каких-то странных вещей. Таким образом, вы можете проверить это входное значение так же, как и любое другое входное значение, как всегда делают хорошие программисты.
Комментариев нет:
Отправить комментарий