GOOGLE ADS

пятница, 15 апреля 2022 г.

Могу ли я установить ограничение записи метода paginate Laravel с информацией о пользователе?

Я использую 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это хорошие ценности. Если вы видите, что данные недействительны, это хорошая стратегия, чтобы сразу выйти из строя, не дожидаясь каких-то странных вещей. Таким образом, вы можете проверить это входное значение так же, как и любое другое входное значение, как всегда делают хорошие программисты.

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...