поэтому у меня есть сайт, где пользователи могут зарегистрироваться, используя выбранное им имя пользователя, и могут отправлять большие блоки текста и добавлять комментарии. В настоящее время для предотвращения XSS я использую strip_tags для данных при вводе в базу данных и выводю только данные в теле, а не в атрибуте.
В настоящее время я делаю изменения на сайте, одним из которых является создание пользовательской страницы, которая загружается, когда кто-то нажимает на имя пользователя (ссылку). Это будет выглядеть так:
<a href="example.com/user/<?php echo $username; ?>">...</a>
Я беспокоюсь, что для переменной $ username кто-то может вставить
<a href="example.com/user/user" onClick="javascript:alert('XSS');">...</a>
Я читал кучу других SO сообщений на эту тему, но ни один не дал черно-белый ответ. Если я использую следующее для всего текста на выходе, в дополнение к strip_tags на входе:
echo htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
Достаточно ли этого, чтобы остановить все атаки XSS, включая те, которые используют встроенный синтаксис javascript:
?
Кроме того, есть ли способ удалить реальные HTML-теги, не удаляя такие вещи, как «Я> ты»?
Спасибо!