| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Универсальная защита от xss-атак и sql-инъекций |
| Автор: superpupervest 11.7.2019, 16:01 | ||
Я не занимаюсь технической поддержкой сайтов, но так уж сложилось, что ко мне часто обращаются за помощью. С одной стороны отказывать неудобно, да и не выгодно с коммерческой точки зрения, с другой за большое спасибо в магазине тоже не расплатишься. Поэтому я решил написать универсальное решение, но столкнулся с некоторыми проблемами. Суть решения заключается в том, чтобы отловить данные POST, GET, COOKIE и обработать их еще до того, как сайт произведет с ними какие-либо действия. Вот собственно сам код
Тоже самое я сделал по аналогии с _GET и _COOKIE Основные недостатки. 1) У меня так и не вышло обработать, а точнее перезаписать их внутри функции и передать _POST, _GET и _COOKIE в качестве переменных, а главное, как следствие, обработать многомерные массивы данных рекурсивно. Соответственно $_POST[][], $_POST[][][] и тд уже обработать не выйдет и каждый такой массив надо вставлять отдельно. Массив может быть бесконечно большой, а код получится бесконечно громозкий. 2) Не охота убирать функцию mysql_real_escape_string ведь никогда не знаешь, где ее забыли упомянуть, но возникает проблема излишнего экранирования символов. 3) strip_tags удаляет все теги. Мне бы не хотелось убирать все, а лишь самые опасные теги, но беда в том, что в дополнительных параметрах можно указать только теги, которые нужно оставить. Конечно, можно использовать регулярные выражения, но к сожалению, нет уверенности в том, что не забудешь что-нибудь важное, поэтому если у кого-то есть отличная замена этому, то предлагаю собрать все в кучу и избавиться от strip_tags 4) Ну и жду других советов по данному вопросу. |
| Автор: Vardoulacha 12.7.2019, 05:36 | ||
За использование расширения mysql_ программист должен гореть в аду
Написано уже вагон и маленькая тележка инструментов для фильтрации xss, тем более xss принято фильтровать ПЕРЕД ВЫВОДОМ, а не перед вставкой в базу А от sql-инъекций также легко защитится используя как минимум PDO, или хотя бы какой-нибудь query-builder коих тоже на просторах интернета как грязи и все умеют в защиту sql-инъекций И уж если сайт написан без использования этих инструментов, в 2019 году, то такой сайт должен тоже гореть в аду, а нищеброды заказчики должны страдать )) А если это древний сайт, то логично что пора его обновлять с учетом современных реалий А раз вы используете расширение mysql_ то эти сайты 100% устарели, PHP 7.0 уже в январе 2019 умер, скоро уже 7.1 умрет, так что делайте выводы, вместо костылей может надо сайт обновит и перевести на рельсы PHP 7+ заодно и скорость увеличится |
| Автор: Xahina 26.12.2020, 18:23 |
Модератор: Сообщение скрыто. |