• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Мой фильтр БД жрет смайлы. Безопасно ли его облегчить?

Full-R

Заблокирован
06.09.2020
72
39
BIT
0
Приветствую. Для моего framework я написал свой движок БД, который конструирует и фильтрует запросы MySQL.

Я использую mysql_real_escape и mysq_sql_real_connect и набор своих фильтров. Вот код:

PHP:
    // Cleanup outer SQL
    protected static function escapeOuter( string $s ): string {

        return preg_replace(

                ['/(\/\*\s*\w*\s*(?!.\/\*))/si', '/(\-\-\s*\w*\s*(?!.\-\-))/si', '/(or\s*\w*\s*=\s*\w(?!.*or)|\|\|\s*\w*\s*=\s*\w(?!.\|\|))/si', '/[\x{10000}-\x{10FFFF}]/u'],

                [';', ';', '', '\xEF\xBF\xBD'],

                str_replace(

                    ['--+', '"', "\x1a", '%', 'qq ', '--', '/*!', '*/'],

                    [';', '"', '\\Z', "\%", '--', '/*!', '*/'],

                    trim($s)

                )

        );

    }

    // Cleanup inner SQL
    protected static function innerEscape( string $v ): string {

        // Secure stage means that inner SQL clauses fixed to be secure
        $secureStage = str_ireplace(

            [' OR ', '||', ' AND ', '&&', ' ON ', "'", '--+', 'qq', '"', '--', '%', '/*!', '*/'],

            [' or ', ' || ', ' and ', ' && ', ' on ', '\'', ';', '', '"', '--', '%', '/*!', '*/'],

            addslashes(

                htmlspecialchars($v)

            )

        );

        // Not available to use built in escape future when DB connection not established
        if( isset( self::$dbx_lnk[ 1 ] ) ) {

            if( (bool)self::$dbx_lnk[ 1 ]['CONNECTION'] ) {

                return mysqli_real_escape_string( self::$dbx_lnk[ 0 ], $secureStage );

            }
            else {

                return $secureStage;

            }

        }
        else {

            return $secureStage;

        }

    }

Проблема в том, что секция '/[\x{10000}-\x{10FFFF}]/u' => '\xEF\xBF\xBD' обрезает смайлы emoji(как модифицировать чтобы оставить смайлики?).

MySQL real escape это пропускает и там кажется остаются некоторые уязвимости. Безопасно ли удалить этот кусок кода и не появятся ли какие-то уязвимости?

Второй вопрос: я дополнительно использую STMT для MySQLi(подготовленные запросы). Кто ни будь знает, что конкретно фильтрует STMT и есть ли смысл его использовать с моим набором фильтров? Например QQ уязвимость он не фильтрует :)

Исходный код библиотеки тут: Full-Rx/RevolveR-framework
 

Full-R

Заблокирован
06.09.2020
72
39
BIT
0
В общем фильтр был нереально сатанистский и я сделал его легче. Он является частью фреймворка RevolveR CMF и его можно посмотреть вот тут: RevolveR-CMF/DataBaseX.php at main · Full-Rx/RevolveR-CMF

Я также использую его совместно с фильтром POST и GET переменных из этого класса: RevolveR-CMF/Vars.php at main · Full-Rx/RevolveR-CMF

Кроме того использую жесткий фильтр XSS из фильтра контента: RevolveR-CMF/Markup.php at main · Full-Rx/RevolveR-CMF

Приглашаю искушенных искусных мастеров взлома попытаться взломать RevolveR CMF.
Исходники тут: Full-Rx/RevolveR-CMF: RevolveR Contents Management Framework v.2.x

Я трудился 3 года чтобы собрать воедино все груды сниппетов и отработать техники программирования, которые у меня накопились и смог сделать, кажется, самый защищенный на данный момент framework на PHP.

Требования PHP 7.4 или PHP8(глючит JIT и через сутки падает OpCache). Рекомендуется PHP 7.4 c Zend Opcache и 10Mb памяти сервера минимум. Лучше работать через браузер Microsoft Edge Chromium.

Могу похвастаться фирменной captcha, которая после объявления войны спамерам с последующим публичным оскорблением их рото-п*д*р*м* c легкостью выдержала взломы и попытки ее скомпрометировать.

Видео по установке: RevolveR Contents Management Framework - YouTube
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!