Использование xss_clean хотя бы один раз плохо для меня.Эта процедура пытается очистить ваши данные путем удаления или замены деталей.С потерями и не гарантированно возвращать один и тот же контент при многократном запуске.Это также трудно предсказать и не всегда будет действовать надлежащим образом.Учитывая количество вещей, которые он делает, чтобы попытаться очистить строку, существует огромный удар по производительности для использования этого на входе.Даже самый малый бит ввода, такой как a = b, вызовет волну активности для xss_clean.
Я хотел бы сказать, что вы никогда не должны использовать xss_clean, но реально я не могу этого сказать.Эта система создана для неопытных разработчиков, которые не знают, как безопасно управлять пользовательским контентом.Я опытный разработчик, поэтому могу сказать, что ни один проект, над которым я работаю, никогда не должен использовать xss_clean.Однако факт заключается в том, что проблемы коррупции будут менее проблематичными для неопытных разработчиков с более простым использованием, и в конечном итоге это, вероятно, сделает их код более безопасным, даже если они должны будут сделать свой код более безопасным, а не полагаться на быстрые грязные и дешевые хаки.С другой стороны, xss_clean не гарантирует полной безопасности вашего кода и может в конечном итоге ухудшить ситуацию, создав ложное чувство безопасности.Вместо этого рекомендуется по-настоящему изучить, чтобы убедиться, что вы точно понимаете все, что делает ваш код, чтобы вы могли сделать его действительно безопасным.xss_clean не компенсирует ошибки кода, он компенсирует ошибки кодера.
В идеале xss_clean хочет делать это только на выходе (и хочет, чтобы его заменяли htmlentities и т. д.), но большинство людей не будут беспокоиться об этом, так как это прощечтобы они нарушали чистоту данных, просто фильтруя весь ввод, а не фильтруя вывод (что-то можно ввести один раз, но вывести десять раз).Опять же, недисциплинированный разработчик не может поместить xss_clean для одного из этих десяти случаев вывода.
Реально, однако, единственный реальный достойный способ - это правильно закодировать все в представлении в тот момент, когда оно должно отображаться настр.Проблема с преимущественным кодированием заключается в том, что вы храните данные, которые могут быть неправильно закодированы, и вы можете дважды кодировать данные, если они вводятся, затем выводятся в форму, а затем вводятся снова.Если вы думаете о чем-то вроде поля ввода, у вас могут возникнуть серьезные проблемы с ростом данных.Не вся санитария удаляет контент.Например, если вы добавите косую черту, это добавит контент.Если у вас есть косая черта в вашем контенте, каждый раз, когда вы запускаете addlashes, добавляется новая косая черта, заставляющая его расти.Хотя есть большая вероятность, что ваши данные в конечном итоге будут встроены в HTML, вы также не всегда можете точно знать, где эти данные окажутся.Внезапно вы получаете новое требование, которое применяется к предыдущим данным, и все, вы облажались, потому что вы применили фильтр с потерями к входящим данным до их хранения.В данном случае под потерями это может означать вашу работу после повреждения всех пользовательских данных в вашей базе данных.Ваши данные, как правило, наиболее ценная вещь для веб-приложения.Это большая проблема с упреждающим кодированием.С ним легче работать, если вы всегда знаете, что ваши данные чисты и можете избежать их в зависимости от ситуации, но если ваши данные могут быть в любом состоянии в будущем, это может быть очень проблематично.Фильтрация также может вызывать некоторые случайные логические сбои.Так как очистка может удалить содержимое, например, две строки, которые не совпадают, могут быть сопоставлены.
Многие проблемы с xss_clean при вводе аналогичны или аналогичны тем, которые возникают для magic_quotes: http://en.wikipedia.org/wiki/Magic_quotes
Сводка: Вы не должны использовать его, а вместо этого блокировать неверные данные при вводе пользователем и корректно экранировать при выводе.Если вы хотите очистить пользовательские данные, это должно произойти на клиенте (браузер, проверка формы), чтобы пользователь мог их увидеть.Вы никогда не должны иметь невидимое изменение данных.Если вы должны запустить xss_clean.Вы должны запустить его только один раз, на выходе.Если вы собираетесь использовать его для проверки правильности введенных данных, укажите $ posts_data! == xss_clean ($ posts_data), а затем отклоните.