Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > PHP > как экранировать кавычки?


Автор: woojin 17.04.17, 09:31
всем привет!
появилась такая проблема: пришёл скрипт который был записан в виде шестнадцатеричных символов
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    ${"\x47\x4c\x4f\x42AL\x53"}["\x65\x74r\x79\x66\x6d"] = "\x62u\x66\x66\x65\x72";
    fwrite($this->fh_tmp, "(");
    ${"\x47\x4cO\x42\x41LS"}["\x75\x63\x70j\x66u\x68\x77\x6c\x67\x6e\x6c"] = "\x6e";
    $ljpkvsgylec = "\x66\x69";

раскодировал я его нормально!
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    function escapedHexToHex($escaped) {
        $ignore = array('fe', 'ff', 'ef', 'bb', 'bf');
        if (in_array(strtolower($escaped[1]), $ignore)) {
            $stop = 1; // это для отладки не используемая переменная
        } else {
            $hd = hexdec($escaped[1]);
            $chr = chr($hd);
            return $chr;
        }
    }
    $decoded = preg_replace_callback('#\\x([a-f0-9]{2})#im', 'escapedHexToHex', $content);

но после оказалось что есть строки в которых присутствуют кавычки (разные и ` и " и ') и они не экранированы :'(
подскажите регексп или может код которым можно исправить данную штуку
пример (пара строк):
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    $this->lng_list = "<option value="auto">- auto -</opinion>";
    ....
    mysql_query("SELECT * INTO OUTFILE '{$this->JOB['file_buf']}' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY \"'" LINES TERMINATED BY '\\0\\0\\0\\\0' FROM `{$n[1]}`" . (${${"GLOBALS"}["ucpjfuhwlgnl"]}[5] < ${${"GLOBALS"}["etryfm"]} ? "" : " LIMIT {$i}, {$limit}"))or sxd_my_error();


P.S. может быть с такой задачей может справится PHP_Beautifier, тогда какое должно быть правило проверки и расстановки "экранов"

Автор: Serafim 17.04.17, 22:22
Выкинуть такой код в помойку. Сразу и без раздумий. Нет, я серьёзно. Это лучшее решение. Выкинуть и написать по-нормальному.

Добавлено
Ну т.е. это не придирка, вроде "пришёл на форум, а тебе вместо ответа - критика". Больше времени сэкономишь.

А вот последний пример кода - это воообще ................. :wall: >:( :wall: :wall:

За такое не то что кастрировать, за такое надо на кол сажать. С провёртом по оси Z

Добавлено
mysql_... функции вырезаны из языка 10 лет назад, их сейчас вообще там нету и подключить нельзя никак. А `${"GLOBALS"}["ucpjfuhwlgnl"]` - серьёзно? В коде 20-летней давности можно встретить глобалсы, но вот прям так из них сразу в запрос? Ты понимаешь, что это настолько большая дыра в системе, что чёрная дыра галактики Андромеда как капля в океане.


Не, нахрен такой трешак. Это... Блин, не школьник писал, это детсадовец с особо извращённым чувством юмора, который решил насрать руководству. Удаляй, просто бери и сжигай.

Автор: woojin 18.04.17, 05:20
куда деваться, приходится работать со всяким "дерьмом" :oops:
лучше посоветуйте как быть с отслеживанием экранирования

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)