Будет ли отправка красноречивого для безопасного просмотра в laravel? - PullRequest
1 голос
/ 08 мая 2020

Я только начал изучать программирование с laravel, и когда мне пришлось распечатать некоторые пользовательские данные с его идентификатором с помощью foreach,

например

{{ $user->username }}
{{ $user->somedata1 }}

, а другие части будет выглядеть примерно так:

Маршрут

Route::get('/some/{user}', 'SomeController@show');

Контроллер

public function show(User $user){

return view(some.show)->with('user' $user)
}

Таблица пользователей

id
username
somedata1
somedata2
password
addr
birthday
...

Я начал думать, что это вызовет каждый данные в своей строке таблицы, а затем распечатать из нее имя пользователя? Следовательно, возникает риск возникновения какой-либо проблемы безопасности, такой как раскрытие конфиденциальных данных, таких как пароль, адрес и т. Д. c?

Если да, как я могу скрыть определенные столбцы c от вызова? Нужно ли мне вручную подготавливать данные из контроллера?

ДОБАВЛЕНО: Контроллер из примера возвращает все в своей строке?

Ответы [ 2 ]

1 голос
/ 08 мая 2020

Если вы используете sh, чтобы скрыть указанный столбец c из извлеченных данных, вы должны определить свойство $hidden для своей модели:

class User extends Model
{
/**
 * The attributes that should be hidden for arrays.
 *
 * @var array
 */
protected $hidden = ['password','address'];
}
1 голос
/ 08 мая 2020

Прежде всего, даже если вы открываете пароли для представления, учитывая, что вы используете скаффолд аутентификации Laravel, беспокоиться не о чем, поскольку пароли хешируются через bcrypt. Любая хешированная строка не может быть отменена.

Во-вторых, вы можете использовать метод select() Eloquent. Вы можете сделать это следующим образом:

Model::select('column_1','column_2')->where('column_1', 'value')->get();

Думаю, это решает ваш вопрос.

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