Нет. Я действительно изучал это, когда я искал использование CSS и атрибутов для автоматического назначения стилей на основе контента ( мой вопрос ), и короткий ответ - нет. Современные браузеры не позволяют использовать «байтовые последовательности» в качестве HTML. Я слегка использую «байтовые последовательности», потому что в коде наибольшего риска не используются байтовые значения.
Примеры, перечисленные на сайте XSS, касаются использования атрибутов и интерпретации JavaScript как строки, которая требует выполнения. Но также перечислены такие вещи, как &{alert('XSS')}
, который запускает код в скобках, и этот код не работает в современных браузерах.
Но чтобы ответить на ваш второй вопрос, нет, фильтрации этих 5 недостаточно, чтобы предотвратить атаку XSS. Бросайте свой код через код специальных символов PHP HTML всегда, но есть сотни байтовых кодов, которые можно использовать , и вы не сможете ничего гарантировать. Отправка через PHP-фильтр (особенно htmlentities()
) даст вам точный текст, введенный при выводе его в HTML (IE «
вместо "). При этом в большинстве случаев, в зависимости от вашего использования, используется htmlspecialchars
этого достаточно для покрытия большинства атак. Зависит от того, как вы будете использовать ввод, но по большей части это будет безопасно.
XSS - сложная вещь для объяснения. Общее хорошее правило - всегда фильтровать все, что пользователь введет. И используйте белый список вместо черного. То, о чем вы здесь говорите, будет в черном списке этих значений, когда всегда безопаснее предположить, что ваши пользователи злонамеренные и допускают только определенные вещи.