В настоящее время я извлекаю данные из RSS-канала (XML). Примером может быть:Извлеченные данные и XSS
Bob's dog
Теперь у меня есть проблема: Я хотел бы защитить себя от XSS из-за данных, поступающих от иностранного источника. Поэтому я иду вперед и избежать данных, результат:
Bob's dog
Теперь, когда я пытаюсь напечатать данные, которые я распаковывается, он печатает:
Bob's dog
... вместо того, чтобы ...
Bob's dog
Вопрос: Как я могу защитить себя от XSS, но все же распечатать данные, избегая двойных сущностей?
Использование регулярного выражения для фильтрации входных данных может предотвратить атаку XSS. Вы используете только альфа-числовые символы, пробелы и символы с кодированными символами. Примером такого регулярного выражения может быть «([A-Za-z0-9 \\ s] +) | (& # \\ d {1,3};)". Затем вы можете отменить регулярное выражение и удалить совпадения; Например. ([^ A-Za-z0-9 \\ s] +) | ([^ (& # \\ d {1,3};)]) – JohnWO
Сначала декодируем строку, которую вы получили, и после этого используйте 'htmlspecialchars ($ строка, ENT_QUOTES, 'UTF-8') '. – PeeHaa
Это кажется радикальным. Разве нет возможности сначала декодировать объекты, а затем снова закодировать их вместе с другими специальными символами? – user3228959