При этом символы «» будут преобразованы…
При этом символы «» будут преобразованы в «», т. е. все теги будут считаться обычным текстом. Примечание. Функция htmlspecialchars имеет еще несколько параметров, о которых можно почитать здесь. Главный недостаток этого метода в том, что пользователь вообще не сможет форматировать текст. Например, если вы захотите, чтобы пользователь мог выделять текст жирным шрифтом, этот вариант не подойдет. 2) Использовать альтернативный язык разметки. Например, BBCode. Сейчас это язык применяется практически на всех форумах. Теги в BBCode заключаются в квадратные скобки «[, ]», а не угловые «, >» как в html. Естественно, при формировании страницы происходит преобразование этих тегов в обычные (html).
Защита обеспечивается тем, что BBCode содержит очень ограниченный набор тегов (по сравнению с html). Например, тег [script] отсутствует. Естественно, все html теги либо удаляются, либо обрабатываются по первому способу. Т. к. библиотеки для работы с BBCode встроены практически во все движки форумов, то использовать это вариант несложно. Примечание. Подробнее о BBCode можно почитать здесь. 3) Использование ограниченного набора html тегов. Суть этого метода заключается в том, что отсеивается только часть html тегов. При этом нужно учитывать все возможные варианты использования html тегов.
Например, JavaScript код может быть вставлен параметр onClick тега. В общем, в этом случае лучше всего использовать библиотеку вроде HTML Purifier. Принцип ее работы достаточно простой. Из исходного текста удаляются все теги, кроме разрешенных. Единственный минус при использовании таких библиотек – это дополнительное потребление ресурсов. Заключение Как видите, защитить сайт не так уж и сложно, главное не откладывать вопросы безопасности. Но учтите, что кроме «дыр» в php коде существуют еще уязвимости web сервера и операционной системы. К сожалению, если у вас нет собственного сервера, то в этих вопросах придется полагаться на службу техподдержки хостера. И, самое главное, «человеческий фактор».
Тот же форум не сможет нормально существовать без модераторов, его могут просто «заспамить» без всяких XSS атак. До встречи!