Symfony 4 - Безопасна ли профильная система моего пользователя?

Bonjour,

Я начинаю с Symfony и пытаюсь заставить пользователей видеть профиль других пользователей.

Шаблон моего профиля одинаков для всех, отображение информации основано на имени пользователя, которое передается в параметрах URL. Я просто сравниваю по ветке, если имя пользователя в сеансе и один в параметрах соответствуют.

Для примера на мой взгляд:

{% if app.user.username == userAccount.username%}

Мой профайл

{% else%}

{{userAccount.username}} профиль

{% endif %}

Мой метод индекса для учетной записи маршрута:

    public function index($username, UserRepository $repo, Request $request{

    $user = $repo->findUserByUsername($username);

    if (!$user){throw $this->createNotFoundException();}

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

Затем я создаю страницу смены пароля, маршрут всегда принимает имя пользователя в качестве параметра. Однако на этот раз в моем контроллере я указал, что необходимо перенаправить пользователя в случае, когда его имя пользователя в сеансе не было идентично тому, которое необходимо передать в параметрах.

public function changePassword($username, Request $request, UserPasswordEncoderInterface $passwordEncoder, ObjectManager $manager, \Swift_Mailer $mailer){
$user = $this->getUser();

 if ($username == null){
 $username = $user->getUsername();}

 if ($user->getUsername() !== $username){
 throw $this->createNotFoundException();}}

Это верный способ убедиться, что пользователь правильный?

Я не знаю, хорош ли мой способ делать вещи, поэтому, если бы кто-то мог просветить меня, чтобы я мог продолжить или адаптировать свою работу.

Спасибо!

1 ответ

Twig выполняется на стороне сервера, поэтому, если ваш код написан правильно, я не вижу проблем с безопасностью. Запрос не может быть перехвачен таким образом.

Но если вы беспокоитесь (разработчики тоже могут ошибаться), я бы посоветовал разделить шаблоны и использовать одни и те же элементы.

Для части changePassword вам действительно нужно передать имя пользователя в запросе? У вас уже есть аутентифицированный пользователь в сеансе.

Другие вопросы по тегам