Добавить новость



Новости сегодня на DirectAdvert

Новости сегодня от Adwile

Универсальная защита от xss-атак и sql-инъекций

Я не занимаюсь технической поддержкой сайтов, но так уж сложилось, что ко мне часто обращаются за помощью. С одной стороны отказывать неудобно, да и не выгодно с коммерческой точки зрения, с другой за большое спасибо в магазине тоже не расплатишься. Поэтому я решил написать универсальное решение, но столкнулся с некоторыми проблемами.
Суть решения заключается в том, чтобы отловить данные POST, GET, COOKIE и обработать их еще до того, как сайт произведет с ними какие-либо действия.
Вот собственно сам код

Код:

$jsxss="onabort,oncanplay,oncanplaythrough,ondurationchange,onemptied,onended,onerror,onloadeddata,onloadedmetadata,onloadstart,onpause,onplay,onplaying,onprogress,onratechange,onseeked,onseeking,onstalled,onsuspend,ontimeupdate,onvolumechange,onwaiting,oncopy,oncut,onpaste,ondrag,ondragend,ondragenter,ondragleave,ondragover,ondragstart,ondrop,onblur,onfocus,onfocusin,onfocusout,onchange,oninput,oninvalid,onreset,onsearch,onselect,onsubmit,onabort,onbeforeunload,onerror,onhashchange,onload,onpageshow,onpagehide,onresize,onscroll,onunload,onkeydown,onkeypress,onkeyup,altKey,ctrlKey,shiftKey,metaKey,key,keyCode,which,charCode,location,onclick,ondblclick,oncontextmenu,onmouseover,onmouseenter,onmouseout,onmouseleave,onmouseup,onmousemove,onwheel,altKey,ctrlKey,shiftKey,metaKey,button,buttons,which,clientX,clientY,detail,relatedTarget,screenX,screenY,deltaX,deltaY,deltaZ,deltaMode,animationstart,animationend,animationiteration,animationName,elapsedTime,propertyName,elapsedTime,transitionend,onerror,onmessage,onopen,ononline,onoffline,onstorage,onshow,ontoggle,onpopstate,ontouchstart,ontouchmove,ontouchend,ontouchcancel,persisted,javascript";
$jsxss = explode(",",$jsxss);
foreach($_POST as $k=>$v)
{
        if(is_array($v))
        {
                foreach($v as $Kk=>$Vv)
                {
                        $Vv = preg_replace ( "'<script[^>]*?>.*?</script>'si", "", $Vv );
                        $Vv = str_replace($jsxss,"",$Vv);
                        $Vv = str_replace (array("*","\\"), "", $Vv );
                        $Vv = strip_tags($Vv);
                        $Vv = htmlentities($Vv, ENT_QUOTES, "UTF-8");
                        $Vv = htmlspecialchars($Vv, ENT_QUOTES);
                        $_POST[$k][$Kk] = $Vv;
                }
        }
        ELSE
        {
                //Сначала удаляем любые скрипты для защиты от xss-атак
                $v = preg_replace ( "'<script[^>]*?>.*?</script>'si", "", $v );
                //Вырезаем все известные javascript события для защиты от xss-атак
                $v = str_replace($jsxss,"",$v);
                //Удаляем экранированание для защиты от SQL-иньекций
                $v = str_replace (array("*","\\"), "", $v );
                //Экранируем специальные символы в строках для использования в выражениях SQL
                $v = mysql_real_escape_string( $v );
                //Удаляем другие лишние теги.       
                $v = strip_tags($v);
                //Преобразуеv все возможные символы в соответствующие HTML-сущности
                $v = htmlentities($v, ENT_QUOTES, "UTF-8");
                $v = htmlspecialchars($v, ENT_QUOTES);
                //Перезаписываем GET массив
                $_POST[$k] = $v;
        }
       
}

Тоже самое я сделал по аналогии с _GET и _COOKIE
Основные недостатки.

1) У меня так и не вышло обработать, а точнее перезаписать их внутри функции и передать _POST, _GET и _COOKIE в качестве переменных, а главное, как следствие, обработать многомерные массивы данных рекурсивно. Соответственно $_POST[][], $_POST[][][] и тд уже обработать не выйдет и каждый такой массив надо вставлять отдельно. Массив может быть бесконечно большой, а код получится бесконечно громозкий.

2) Не охота убирать функцию mysql_real_escape_string ведь никогда не знаешь, где ее забыли упомянуть, но возникает проблема излишнего экранирования символов.

3) strip_tags удаляет все теги. Мне бы не хотелось убирать все, а лишь самые опасные теги, но беда в том, что в дополнительных параметрах можно указать только теги, которые нужно оставить. Конечно, можно использовать регулярные выражения, но к сожалению, нет уверенности в том, что не забудешь что-нибудь важное, поэтому если у кого-то есть отличная замена этому, то предлагаю собрать все в кучу и избавиться от strip_tags

4) Ну и жду других советов по данному вопросу.

Читайте на 123ru.net

Другие проекты от 123ru.net



Архангельск

Более 39 млн рублей направлено на летний отдых и оздоровление детей-сирот в Архангельской области



Мода

Blumarine, коллекция Resort 2025




Українські новини

Відомий аграрій Кормишкін, складає свої депутатські повноваження



Новости 24 часа

Директор Росгвардии генерал армии Виктор Золотов принял участие в посвященных 100-летию дивизии имени Ф.Э. Дзержинского торжественных мероприятиях



Game News

The original Counter-Strike mod is 25 years old, Valve calls it 'the greatest videogame ever made'



Москва

Политолог Марков: Джефф Монсон принял ислам в Москве



News Every Day

PGA Tour Commissioner Jay Monahan shuts down Saudi agreement rumors: “complex scenario”



Авто

ТСМ реконструирует участок трассы М-1 «Беларусь»



Москва

В результате непогоды в Москве и Подмосковье повреждены более 500 автомобилей



Бато Багдаев

«Волшебные башмачки Элли» - эта постановка создана по мотивам знаменитой сказки Александра Волкова «Волшебник Изумрудного города» - Театр и Цирк, Культура и Концерт, Россия и Дети



Москва

Отбывавший срок за взятку экс-губернатор Кировской области Белых вышел на свободу



Уимблдон

Экс-теннисист Ольховский: россияне могут хорошо выступить на Уимблдоне



Москва

За прошедшую неделю подмосковные росгвардейцы обеспечили безопасность более 200 мероприятий



Филипп Киркоров

Филипп Киркоров, Shaman, Сергей Жуков, Катя IOWA показали награды и наряды в студии "Авторадио"



Симферополь

Фольклорно-литературная программа «Сказки детства, полные чудес, нас уводят в царство тридесятое»



Москва

Галина Ржаксенская впервые стала участником ПМЭФ в Санкт-Петербурге



Москва

Сергей Собянин: Активно укрепляем отношения с Китаем



Москва

Топ-5 самых ярких зарубежных архитектурных проектов на первичном рынке Москвы



103news.com — быстрее, чем Я..., самые свежие и актуальные новости Вашего города — каждый день, каждый час с ежеминутным обновлением! Мгновенная публикация на языке оригинала, без модерации и без купюр в разделе Пользователи сайта 103news.com.

Как добавить свои новости в наши трансляции? Очень просто. Достаточно отправить заявку на наш электронный адрес mail@29ru.net с указанием адреса Вашей ленты новостей в формате RSS или подать заявку на включение Вашего сайта в наш каталог через форму. После модерации заявки в течении 24 часов Ваша лента новостей начнёт транслироваться в разделе Вашего города. Все новости в нашей ленте новостей отсортированы поминутно по времени публикации, которое указано напротив каждой новости справа также как и прямая ссылка на источник информации. Если у Вас есть интересные фото Вашего города или других населённых пунктов Вашего региона мы также готовы опубликовать их в разделе Вашего города в нашем каталоге региональных сайтов, который на сегодняшний день является самым большим региональным ресурсом, охватывающим все города не только России и Украины, но ещё и Белоруссии и Абхазии. Прислать фото можно здесь. Оперативно разместить свою новость в Вашем городе можно самостоятельно через форму.

Другие популярные новости дня сегодня


Новости 24/7 Все города России





Топ 10 новостей последнего часа




Новости России

Собянин предупредил москвичей о ливнях и возможном формировании смерчей 20 июня

Проект Детского радио – победитель второго грантового конкурса Президентского фонда культурных инициатив

Более 40 новых автобусов закупят в «Мострансавто» Мытищ до конца года

Канадский министр Леблан: Оттава признала КСИР террористической организацией


Москва

Галина Ржаксенская впервые стала участником ПМЭФ в Санкт-Петербурге






Rss.plus

Директор Росгвардии генерал армии Виктор Золотов принял участие в посвященных 100-летию дивизии имени Ф.Э. Дзержинского торжественных мероприятиях

Вербовку Зеленского могут успешно применить?!

СЕНСАЦИОННЫЙ ДОКЛАД ПРО ДЕЛО СКРИПАЛЕЙ, САФРОНОВА, ГОЛУНОВА.

Директор Росгвардии генерал армии Виктор Золотов принял участие в посвященных 100-летию дивизии имени Ф.Э. Дзержинского торжественных мероприятиях

Moscow.media
Москва

Собянин рассказал о росте турпотока из Китая



103news.comмеждународная интерактивная информационная сеть (ежеминутные новости с ежедневным интелектуальным архивом). Только у нас — все главные новости дня без политической цензуры. "103 Новости" — абсолютно все точки зрения, трезвая аналитика, цивилизованные споры и обсуждения без взаимных обвинений и оскорблений. Помните, что не у всех точка зрения совпадает с Вашей. Уважайте мнение других, даже если Вы отстаиваете свой взгляд и свою позицию. 103news.com — облегчённая версия старейшего обозревателя новостей 123ru.net.

Мы не навязываем Вам своё видение, мы даём Вам объективный срез событий дня без цензуры и без купюр. Новости, какие они есть — онлайн (с поминутным архивом по всем городам и регионам России, Украины, Белоруссии и Абхазии).

103news.com — живые новости в прямом эфире!

В любую минуту Вы можете добавить свою новость мгновенно — здесь.

Музыкальные новости

Фёдор Шаляпин

«Всю жизнь я зарабатывал пением и… легким аферизмом». Прохор Шаляпин раскрыл источники дохода в шоу «Вкусно с Анфисой Чеховой» на ТВ-3




Спорт в России и мире

Алексей Смирнов – актер, которого, надеюсь, еще не забыли

В Лужниках состоялась церемония открытия Всероссийской Спартакиады Специальной Олимпиады

Красногорск первым встретил участников международного супермарафона Москва-Минск

В УФСИН России по Республике Дагестан прошли лично-командные соревнования по легкой атлетике


Людмила Самсонова

Теннисистка Самсонова вышла в финал турнира в Хертогенбосхе



Новости Крыма на Sevpoisk.ru


Москва

Собянин: Москва и Пекин подписали программу сотрудничества на 2024-2026 годы



Частные объявления в Вашем городе, в Вашем регионе и в России