Как правило, вы должны htmlspecialchars()
вводить данные пользователя в тот момент, когда вы вставляете их в HTML.Но в этом случае у вас уже есть HTML, поэтому вы ничего не можете сделать.
Вы не можете с пользой фильтровать встроенные плагины.Если вы разрешаете пользователям указывать произвольный файл Flash или другой плагин, вы уже фактически предоставили им бесплатный доступ к межсайтовому скриптингу в контексте безопасности, и никакая очистка строк не исправит это.
Есливам действительно нужно разрешить пользователям отправлять произвольный Flash или другой код <object>
/ <embed>
, вам нужно будет разместить этот ненадежный код в отдельном контексте безопасности.Как правило, вы ставите основной сайт на www.example.com
и включаете от <iframe>
до stuff.example.com
, который выплевывает ненадежный код <object>
.Затем, когда код плагина пытается сделать что-то враждебное, по крайней мере, это может повлиять только на stuff.example.com
, а не на любое ваше реальное веб-приложение на www.example.com
.
В качестве альтернативы, вы можете разрешить пользователям размещать видео-контент только споставщики, которым вы доверяете, например.youtube.com
.Затем вы просто позволяете им отправить идентификатор видео YouTube и самостоятельно создать код <object>
, чтобы указать URL-адрес для этого идентификатора.