Как избежать / дезинфицировать URL-адрес, указанный пользователем в twig / symfony? - PullRequest
0 голосов
/ 04 августа 2020

Я пытаюсь escape дезинфицировать предоставленную пользователем ссылку в шаблоне веточки. Я использую Symfony 5. Изначально я начинал свой проект в Wordpress, но сейчас создаю его в Symfony. Мне очень понравилась функция esc_url Wordpress, с помощью которой можно было избежать ссылки, предоставленной пользователем, и она была бы действительной.

Теперь я знаю, что могу использовать фильтр escape ('url'), чтобы избежать ее. Но под капотом это просто запускает собственный php rawurlencode, который не очищает URL-адрес.

Пример:

Это:

<a href="{{ 'https://example.com/this/may-be-invalid/'|e('url') }}">SOME URL</a>

превращается в это:

<a href="https%3A%2F%2Fexample.com%2Fthis%2Fmay-be-invalid%2F">SOME URL</a>

Если пользователь щелкнет по этой ссылке, он будет перенаправлен на: http://localhost/https: //example.com/this/may-be-invalid/

Примечание: localhost может быть любой домен, просто пример.

Пример:

<a href="<?= esc_url('https://example.com/this/may-be-invalid/') ?>">SOME URL</a>

превращается в это:

<a href="https://example.com/this/may-be-invalid/">SOME URL</a>

Есть ли аналогичная функция / фильтр в Twig или do Мне нужно перенести esc_url Wordpress в мой проект, отличный от Wordpress?

Как я могу очистить предоставленный пользователем URL-адрес в Twig / Symfony?

Изменить: обновлен вопрос на основе комментария @ DarkBee

...