Лучше иметь слишком много проверок и процедур проверки, чем слишком мало. Система не более или менее безопасна, добавляя избыточность. Эфир это уязвимость или нет, это логическое значение, а не число с плавающей точкой. Когда я проверяю код и вижу избыточные меры безопасности, я воспринимаю его как красный флаг, и это побуждает меня копать глубже. Этот программист параноик и, возможно, они не понимают природу уязвимостей, хотя это не всегда так.
Есть еще одна проблема. htmlentities () не всегда останавливает xss, например, что если выходные данные находятся внутри тега <script></script>
или даже href в этом отношении? mysql_real_escape_string не всегда останавливает инъекцию sql, что если: 'select * from user where id='.mysql_real_escape_string($_GET[id]);
. preg_match может исправить эту проблему, но intval () - гораздо лучшая функция для использования в этом случае.
Я ОГРОМНЫЙ поклонник готовых высказываний. Я думаю, что это отличный подход, потому что по умолчанию он безопасен, но передает переменную mysql_real_escape_string () до того, как подготовленный оператор просто повредит данные. Я видел, как новичок исправил эту проблему, удалив все процедуры проверки, таким образом, представляя уязвимость из-за избыточности. Причина и следствие.
Межсетевые экраны веб-приложений (WAF) - отличный пример того, как слои могут повысить безопасность. WAF сильно зависят от регулярных выражений. Они пытаются взглянуть на картину в целом и предотвратить неприятный ввод или, по крайней мере, записать его. Они ни в коем случае не являются серебряной пулей и не должны быть единственной мерой безопасности, которую вы используете, но они останавливают некоторые эксплойты, и я рекомендую установить mod_security на производственных машинах.