Laravel - ИСПОЛЬЗУЕТСЯ или НЕ ИСПОЛЬЗУЕТ заполняемый в модели laravel? - PullRequest
2 голосов
/ 25 апреля 2020

Я хочу использовать этот код: Model::update($request);, однако злоумышленник может изменить все поля в таблице, поэтому я изменяю $fillable в модели, чтобы модифицировать только те, которые пользователь может изменять, а не другие. Но теперь проблема в том, что я не могу изменить его самостоятельно своими значениями.

id  name  verified
1   Alex     0

, если данные, которые злонамеренный пользователь отправляет внутри $request, равны:

[
    'name' => 'ModifiedAlex',
    'verified' => 1,
]

, поэтому изменит таблицу и проверим, что это нехорошо. А если для $fillable указать только имя:

$fillable = [
    'name'
];

, то я сам не смогу изменить это с помощью Model::where('id', $userId)->update(['verified' => 1]).

Что делать тогда? Использовать $fillable или нет?

Ответы [ 2 ]

5 голосов
/ 25 апреля 2020

Продолжайте использовать заполняемые и красноречивые для злоумышленников.

Вы можете использовать Query Builder , чтобы избежать fillable для себя. Он не проверяет fillable.:

DB::table('users')->where('id', $userId)->update(['verified' => 1]); // update with verified.
2 голосов
/ 25 апреля 2020

Вы можете обновить записи по объекту

$user = \App\User::find(1);
$user->verified = 1;
$user->save();

Там, где пользователь предоставляет данные, вы можете использовать Model::where('id', $userId)->update($request->except('_token')), поэтому он избегает любых других полей.

$request->except('_token') дает вам все сообщения данные, кроме _token index

Но для администратора вы можете использовать save для объекта, чтобы обновить / создать пользователей

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...