, поэтому у меня есть сайт, на котором пользователи могут регистрироваться, используя имя пользователя по своему выбору, и могут отправлять большие блоки текста и добавлять комментарии. В настоящее время, чтобы предотвратить 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-теги, не удаляя такие вещи, как «Я> ты»?
Спасибо!