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

Bonjour,

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

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

Например, в моем представлении профиля:

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

Мой профиль

{% else%}

{{userAccount.username}} profile

{% 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 Ответ

0 голосов
/ 20 февраля 2019

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

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

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

...