Как предотвратить использование XSS в атрибутах

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

Спасибо!

6
задан user887068 15 August 2011 в 00:01
поделиться