1. Новые покупки

    11.10.2020: Инвестор в доходные сайты. тариф продвинутый [мария деригина]

    29.09.2020: Как заработать на студентах. Пошаговая инструкция

    23.09.2020: Программный комплекс xrumer + xevil + hrefer + socplugin пк 5200

    20.09.2020: Торговые системы для биржевой торговли (+ бонус 2 робота на мт5)

    12.09.2020: [udemy.com] взламываем сайты / тестирование на проникновение с нуля - все 7 частей!

    20.08.2020: Обучение по заработку на сайтах в интернете [игорь градов]

    19.08.2020: Курс по заработку на сайтах

    12.08.2020: Необходимый плагин clearfy для wordpress

    03.08.2020: Андрей манов - ебырь террорист

    30.07.2020: Деньги из сетки белых сра сайтов [akitory, mr-grey] (авторская)

    22.07.2020: Шеннон дженнифер - руководство по выживанию для подростков. как избавиться от тревожности

    05.07.2020: Факультет информационной безопасности (годовая программа) [geekuniversity]

    05.07.2020: Как выживать и развиваться компаниям, делающим мебель на заказ

    28.06.2020: Мужская сила (гормоны, потенция, либидо). большой сеанс для мужчин.

    13.06.2020: Поиск btc сокровищ. как на автомате найти потеряные адреса btc и их приватные ключи. [zennoposter]

    03.06.2020: От новичка до профи. zennoposter + c#, xnet, html-agility-pack, json. megapack [all-in-one]

    22.05.2020: Как открыть с нуля мини smm-агентство и зарабатывать неприличные деньги

    17.05.2020: Сборник "поиск судебной практики: internet-ресурсы и неочевидные возможности"

    10.05.2020: Сервис арбитражника №1

    23.04.2020: Индиктор "binary leader" + комплет для автоторговли

    19.03.2020: Нашумевшая база after effects[5-ый поток]+3200 шаблонов videohive + бонусы

    12.02.2020: Плагины для видеопортала PHPMelody

    18.01.2020: Мануал шип виш прямик

    17.01.2020: Флешка с клиентами [школа молния] [сергей ананьев]

    22.12.2019: Взламываем сайты / тестирование на проникновение с нуля - часть 3 из 7

    20.12.2019: Контекстная реклама – подготовка профессионалов (2016)

    19.12.2019: Пассивные инвестиции (собери портфель сам) сергей спирин

    11.12.2019: Белая схема, пассивный доход оффлайн.

    07.12.2019: Инфобизнес по сапычу (александр юсупов)

    05.12.2019: [кино] обучение сценарному мастерству

    01.12.2019: Трафик на инфосайты в 2020 году [руслан белый]

    27.11.2019: Like Бизнес 4.0 Аяз Шабутдинов Like Центр

    25.11.2019: Импорт из китая - руководство для начинающих и профессионалов [udemy]

    24.11.2019: Магия бумеранга. распродажа от автора (елена аронова)

    24.11.2019: Метаморфозы 2019 [бизнес молодость]

    15.11.2019: [константин горбунов] наставничество 2018

    06.11.2019: Базы access от андрея домостоя

    25.10.2019: Срасительный курс по партнерскому маркетингу [admitad]

    25.10.2019: Мастер класс по покупке и продаже сайтов (руслан белый) 2019

    12.10.2019: [geekbrains] c# уровень 1 - базовый 2019

  2. Открыт набор организаторов

    Статус "Организатор" на resklad.biz дает возможность:

    • Получить бесплатно инфопродукт и комиссионное вознаграждение.
    • Самоназначаться организатором в любых складчинах/рескладчинах.
    • Повысить свой статус до статуса «Модератор» или «Партнер».
    • Пользоваться личной перепиской.
    • Получить доступ к участию в закрытых складчинах.

    Подробности >>

    Скрыть объявление

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

Тема в разделе "Скрипты и программы", создана пользователем superpupervest, 12 июл 2019.

Этап:
Набор участников
Цена:
10.00 Руб.
Участников:
1 из ∞
Организатор:
Отсутствует
100%
Расчетный взнос:
20 Руб.
  • Участники покупки:
    1. superpupervest;
  1. superpupervest

    Рескладер lvl 1

    Дата регистрации:
    10 окт 2018
    Сообщения:
    1
    Я не занимаюсь технической поддержкой сайтов, но так уж сложилось, что ко мне часто обращаются за помощью. С одной стороны отказывать неудобно, да и не выгодно с коммерческой точки зрения, с другой за большое спасибо в магазине тоже не расплатишься. Поэтому я решил написать универсальное решение, но столкнулся с некоторыми проблемами.
    Суть решения заключается в том, чтобы отловить данные 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) Ну и жду других советов по данному вопросу.
     
    #1