The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

06.12.2018 22:15  Релиз языка программирования PHP 7.3

После года разработки представлен релиз языка программирования PHP 7.3. Новая ветка включает серию новых возможностей, а также несколько изменений, нарушающих совместимость.

Ключевые улучшения в PHP 7.3:

  • Реализован гибкий синтаксис многострочной вставки (строки heredoc и nowdoc), не требующий обязательного перевода строк после маркера окончания блока и допускающий выравнивание отступами;
  • Добавлена поддержка назначения ссылок в list(): теперь поддерживается синтаксис "list($a, &$b) = $array;", эквивалентный присвоению "$a = $array[0]; $b =& $array[1];". Предложен также упрощённый синтаксис присвоения, позволяющий указывать вместо "list()" квадратные скобки, например "[$a, &$b] = $array;"
  • При вызове функций и методов теперь допускается оставление запятых в конце списка аргументов, например, "unset($foo, $bar, $baz,)";
  • Расширение PCRE переведено на ветку PCRE2;
  • Выражение "instanceof" теперь допускает указание литералов в качестве первого операнда (в такой ситуации результат всегда будет FALSE);
  • Добавлено новое исключение CompileError, наследуемое от ParseError и генерирующее для некоторых типов ошибок перехватываемое событие CompileError вместо фатальной ошибки;
  • Значительно расширены возможности и увеличена производительность дополнения MBString, в том числе добавлены полноценные средства для манипуляций с регистром символов (MB_CASE_LOWER, MB_CASE_UPPER, MB_CASE_TITLE, MB_CASE_FOLD и т.п.), до версии 11 обновлена поддержка спецификаций Unicode, добавлена поддержка строк, размером больше 2 Гб, в функциях mb_ereg_*() добавлена поддержка именованного захвата элементов. Объявлены устаревшими вызовы mbereg_*(), вместо которых следует использовать corresponding mb_ereg_*();
  • В SAPI-модуль FPM добавлены новые глобальные опции log_limit и log_buffering для ограничения размера выводимой в лог строки и включения режима записи в лог без буферизации. Также добавлена опция decorate_workers_output, позволяющая отключить декорирование вывода от рабочих процессов при активации режима catch_workers_output;
  • В расширении LDAP в большинстве функций, таких как ldap_add и ldap_read, появился параметр serverctrls для отправки на сервер дополнительных сообщений (LDAP Controls - механизм расширения операций LDAP и передачи дополнительной информации вместе с запросом), а в ldap_parse_result для получения клиентом дополнительных сообщений от сервера. Налажена поддержка режимов LDAP_OPT_SERVER_CONTROLS и LDAP_OPT_CLIENT_CONTROLS в функциях ldap_get_option и ldap_set_option;
  • В заголовок страницы phpinfo(), добавлено отображение переменной PHP_VERSION;
  • В расширение Date добавлен метод DateTime::createFromImmutable();
  • В расширение GD в функции imagecreatefromstring() появилась поддержка создания изображений в формате WebP;
  • При сборке с опцией configure --with-password-argon2 в функциях password_hash(), password_verify(), password_get_info() и password_needs_rehash() обеспечена поддержка алгоритмов хэширования паролей Argon2i и Argon2id;
  • Добавлена функция hrtime() для вывода значения времени (число секунд и наносекунд) на основании показаний монотонного таймера, отражающего неразрывно увеличивающееся время, прошедшее с определённого момента в прошлом;
  • Представлена новая функция net_get_interfaces() для получения информации о доступных сетевых интерфейсах;
  • Улучшена работа сборщика мусора;
  • Переписана на PHP утилита ext_skel (генерирует шаблоны кода дополнений), для запуска которой теперь не нужно дополнительных зависимостей и её можно запускать в том числе в Windows ('php ext_skel.php');
  • Объявлено устаревшим определение имён констант не чувствительных к регистру (определялись при помощи указания в define специального флага).
  • Приведены к соответствию с поведением Unix операции открытия файлов в Windows: файловые дескрипторы теперь по умолчанию открываются в Windows в режиме, допускающем чтение, запись и удаление (открытые файлы теперь можно удалить);
  • Прекращена поддержка платформы BeOS.


  1. Главная ссылка к новости (http://php.net/archive/2018.ph...)
  2. OpenNews: Релиз языка программирования PHP 7.2
  3. OpenNews: Уязвимость, позволяющая удалённо выполнить код на сервере PHP-репозитория Packagist
  4. OpenNews: В PHPMailer выявлена ещё одна критическая уязвимость, вызванная недоработкой в PHP
  5. OpenNews: Уязвимость в движке для создания форумов phpBB
  6. OpenNews: Доступен Composer 1.0.0, менеджер зависимостей для PHP
Лицензия: CC-BY
Тип: Программы
Ключевые слова: php
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.5, Аноним (5), 22:35, 06/12/2018 [ответить] [показать ветку] [···]    [к модератору]
  • +14 +/
    > Прекращена поддержка платформы BeOS.

    То ли у них был человек, все эти годы поддерживающий версию для BeOS не смотря ни на что, и тогда хочется пожать ему руку, то ли они только сейчас поняли, что BeOS никто в реальности не поддерживает, а у них нигде это не отмечено.

    PS. В идеале они бы заменили BeOS на HaikuOS, а то воз который год всё там же https://github.com/php/php-src/pull/2697

     
  • 1.9, Аноним (9), 23:06, 06/12/2018 [ответить] [показать ветку] [···]    [к модератору]
  • +21 +/
    Язык весьма неплохой. В каждой функции есть своя изюминка. Например, при помощи file_exists() можно не только проверить существование файла, но и начать выполнять код, заботливо предоставленный третьей стороной. Удобная фича, рекомендую.

    Если в вашем языке функция проверки существования файла не способна запускать код, просьба меня не беспокоить.

     
     
  • 2.10, Аноним (10), 23:14, 06/12/2018 [^] [ответить]    [к модератору]
  • +5 +/
    То ли дело хипстота, помешанная на магии современных ЯП и фреймворков, не позволяющих бедолагам стрелять себе в ногу даже если захотят.
     
     
  • 3.29, Аноним (29), 02:45, 07/12/2018 [^] [ответить]    [к модератору]
  • +2 +/
    Обидно оказаться с револьвером, когда у кого-то пулемёт на турели.
     
     
  • 4.44, Онаним (?), 09:29, 07/12/2018 [^] [ответить]     [к модератору]
  • +2 +/
    Да ладно, в хипстерских поделках там сам рантайм обычно просто косая кирпичная к... весь текст скрыт [показать]
     
  • 2.31, ъ (?), 03:20, 07/12/2018 [^] [ответить]    [к модератору]  
  • +2 +/
    > Например, при помощи file_exists() можно не только проверить существование файла, но и начать выполнять код, заботливо предоставленный третьей стороной.

    Пример можно?

     
     
  • 3.60, blblblblbl (?), 11:02, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    не будет примера, это же очевидно
     
  • 3.62, YetAnotherAnon (?), 11:06, 07/12/2018 [^] [ответить]    [к модератору]  
  • –1 +/
    30 секунд в гугле
    https://blog.ripstech.com/2018/new-php-exploitation-technique/
     
     
  • 4.63, blblblblbl (?), 11:35, 07/12/2018 [^] [ответить]     [к модератору]  
  • +/
    уже смешно новоявленные секурные спецы оправдывают своё существование и пытаются... весь текст скрыт [показать]
     
  • 4.65, Ilya Indigo (ok), 11:45, 07/12/2018 [^] [ответить]    [к модератору]  
  • –2 +/
    Вы хоть сами прочитали этот бред?
    Это из той же оперы как вирус для линукса для запуска которого нужно пропатчить ядро определённой версии нужным патчем.
     
  • 4.71, ъ (?), 12:17, 07/12/2018 [^] [ответить]    [к модератору]  
  • –1 +/
    > 30 секунд в гугле
    > include($_GET['file'])

    А, ну примерно такой глубины кульхацкерской мысли я и ждал.

     
  • 3.72, userd (ok), 12:20, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    https://www.opennet.ru/opennews/art.shtml?num=49641
     
     
  • 4.77, blblblblbl (?), 13:05, 07/12/2018 [^] [ответить]    [к модератору]  
  • –2 +/
    > Уязвимость вызвана отсутствием проверки поступающих от пользователя данных

    это всё, что нужно знать

     
  • 2.64, Ilya Indigo (ok), 11:39, 07/12/2018 [^] [ответить]     [к модератору]  
  • –1 +/
    1 file_exists - бесполезная ф-ия, так как не проверяет доступен ли файл может ... весь текст скрыт [показать]
     
     
  • 3.70, fi (ok), 12:13, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    > file_exists() - бесполезная

    ну не скажи - если файл используется для синхронизации - тот же lock
    и в шеле постоянно такие проверки делаются.

     
     
  • 4.75, userd (ok), 12:37, 07/12/2018 [^] [ответить]     [к модератору]  
  • +2 +/
    Давайте вынесем шелл за скобки, и собственно содержательную часть проверки сущес... весь текст скрыт [показать]
     
     
  • 5.82, SenaIVV (?), 13:32, 07/12/2018 [^] [ответить]     [к модератору]  
  • +/
    Лет 10 точно использую кэш для сайтов, самая первая строка любого урла на любом ... весь текст скрыт [показать]
     
     
  • 6.83, blblblblbl (?), 13:36, 07/12/2018 [^] [ответить]    [к модератору]  
  • –1 +/
    мало запросов значит, ибо file_exists при инвалидации не атомарен и можно нарваться на dog pile при  генерации нового кеша
     
     
  • 7.84, SenaIVV (?), 13:41, 07/12/2018 [^] [ответить]     [к модератору]  
  • +/
    Абсолютно никак такое не получить Файл просто накроется новым параллельным кодо... весь текст скрыт [показать]
     
     
  • 8.86, blblblblbl (?), 13:54, 07/12/2018 [^] [ответить]     [к модератору]  
  • +/
    про это я и говорю, не должно быть более одного писателя _ если писателей 1 зн... весь текст скрыт [показать]
     
     
  • 9.88, SenaIVV (?), 14:06, 07/12/2018 [^] [ответить]     [к модератору]  
  • +/
    Если писать кэш одной строкой, один раз для файла, то без разницы сколько конкур... весь текст скрыт [показать]
     
     
  • 10.89, blblblblbl (?), 14:22, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Я за 20 лет столько таких кешей повидал и к чему это приводит, что до сих пор удивляюсь, зачем допускать много писателей, которые исполнители.
    Но в общем понятно, почему мало кто видит в чём проблема.
    Это всё прокатывает, пока нет реально больших нагрузок, либо писатели отрабатывают так быстро, что кеш не нужен.
     
     
  • 11.90, SenaIVV (?), 14:33, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Вам ан каком языке написать - тест: 64мб памяти (которых уже никогда не увидеть на реальном даже на шаред хостинге). Одновременных сессий 100, посетителей в минуту 6000, размер страницы 800Кб, длительность теста 1 час - но проблем. Что вы видели? Где вы видели? Поделитесь с нами слепыми, плиз.
     
     
  • 12.103, blblblblbl (?), 15:26, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    я никого уговаривать не собираюсь, делайте как хотите, размер памяти тут не при чём
     
  • 12.116, Аноним (116), 17:16, 07/12/2018 [^] [ответить]     [к модератору]  
  • +/
    Есть пример с файловым кэшем для околореалтайм интерфейса is_file проверка ко... весь текст скрыт [показать]
     
     
  • 13.117, Аноним (116), 17:20, 07/12/2018 [^] [ответить]     [к модератору]  
  • +/
    Выглядит сие высокоуровнево вот так first, try from cache if ... весь текст скрыт [показать]
     
     
  • 14.118, Аноним (116), 17:25, 07/12/2018 [^] [ответить]     [к модератору]  
  • +/
    Ну и readCache с lockCache static protected function readCache id, items, ... весь текст скрыт [показать]
     
  • 13.119, blblblblbl (?), 17:29, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    кеш околореалтайм генерится? схема какая?
     
     
  • 14.121, Аноним (116), 17:41, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Обновление кэша - три-четыре запроса поверх ZeroMQ к фоновым частям приложения + некоторая предобработка.
     
  • 14.122, Аноним (116), 17:43, 07/12/2018 [^] [ответить]     [к модератору]  
  • +/
    Ну то есть писателей в моей схеме нет, читатели сами обновляют кэш В случае с п... весь текст скрыт [показать]
     
     
  • 15.129, blblblblbl (?), 18:35, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Под писателями я имею ввиду тех читателей, которые обнаружили невалидный кеш и пытаются его писать.

    Собственно ещё вопрос, вот читатель видит протухший кеш и видит лок от другого процесса, он что делает? Судя по первому коду, он будет генерить $data, но кеш не обновит из-за чужого LOCK_EX

     
     
  • 16.131, Аноним (116), 18:48, 07/12/2018 [^] [ответить]     [к модератору]  
  • +/
    Читатель видит протухший кэш и пытается взять LOCK_EX Как только LOCK_EX взят -... весь текст скрыт [показать]
     
     
  • 17.132, blblblblbl (?), 19:15, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Получается, что несколько потоков могут одновременно считать новое значение, т.к. время между "Как только LOCK_EX взят - мы ещё раз проверяем кэш" ненулевое, но достаточно малое, чтобы новый кеш мог быть ещё не обновлён другим потоком.
     
     
  • 18.135, Онаним (?), 00:38, 08/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Нет, не могут. Несколько потоков могут контендиться на LOCK_EX на время валидации кэша. На практике под 1200 запросов в секунду при интервале валидности кэша в 1 секунду оно чувствует себя нормально.

    Почему не могут? Потому что как только LOCK_EX взят - никто больше его взять не сможет до завершения обновления "писателем". Таковым LOCK_EX будет отпущен не ранее, чем новое содержимое записано. После чего каждый ждущий "читатель" возьмёт LOCK_EX, считает кэш, убедится, что содержимое обновлено, и сразу же LOCK_EX отпустит. Чтение кэша - операция достаточно быстрая, поскольку таковой полностью сидит в кэше ОС.

     
  • 18.136, Онаним (?), 01:09, 08/12/2018 [^] [ответить]     [к модератору]  
  • +/
    Для обхода конкуренции с ридерами и предотвращения рейсов сделана хитрость лок-... весь текст скрыт [показать]
     
  • 11.91, SenaIVV (?), 14:37, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    И да, я же вам написал - люди делающие php не сопли жуют, а пишут код. Писатели отрабатывают мгновенно (ввиду того, что записываемый текст, отработка запросов и все события системы кэшируются, ввиду их равнозначности, и все последующие писатели просто не нагружают систему в принципе).

    Так что конкурентная запись просто рулит в обычном кэшировании. А то что параллельная запись такая быстрая, это не значит, что кэш не нужен - когда последний писатель исчезнет и кэш процессов системы сбросится - следующий читатель уже получит файл кэша, вместо нагрузочных запросов страницы.

     
  • 10.120, Аноним (116), 17:35, 07/12/2018 [^] [ответить]     [к модератору]  
  • +/
    Проще делать блокировку с обновлением при чтении, проверяя на обновление соседом... весь текст скрыт [показать]
     
  • 6.97, Ilya Indigo (ok), 15:02, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    > И далее уже сразу require_once(файлкэша) exit()

    Если уж дело идёт про скорость, то require_once() - это костыль рукожопов, который нафиг не нужен нормальным программистам, а выполняется он медленнее чем require().

    > Любая отличная от file_exist функция при многотысячных тестах, выполняется медленнее,

    Логично, что проверка на существование и на доступность для чтения медленнее проверки только на существование. А без проверки вообще ещё быстрее будет!

    Если у Вас, конечно, не оффтопик, то Вы получите ошибку, если окажется что файл существует, но он не доступен для чтения.

     
     
  • 7.102, SenaIVV (?), 15:23, 07/12/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    Нет, у меня такой ситуации не может быть, что файл есть, но не доступен для чтения - в этом и смысл и скорость конкурентной записи.

    На счет require_once - если нет совпадающих пространств имен, одинакова скорость.
    У меня нет таких пространств. Просто по привычке осталось с самых азов еще, всегда инклюдить и запрашивать исполнение через гарантию отсутствия дублей функций.

    В самом начале такие коды были, что без этого было никуда :)

     
     
  • 8.107, Ilya Indigo (ok), 15:59, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    > Нет, у меня такой ситуации не может быть, что файл есть, но
    > не доступен для чтения - в этом и смысл и скорость
    > конкурентной записи.

    Буду знать что file_exists() кому-то всё же нужна на мой взгляд в редкой для PHP ситуации.

    > На счет require_once - если нет совпадающих пространств имен, одинакова скорость.
    > У меня нет таких пространств. Просто по привычке осталось с самых азов
    > еще, всегда инклюдить и запрашивать исполнение через гарантию отсутствия дублей функций.

    Я тоже начинал с include_once() пока не понял, что всё кроме require() нужно забыть в PHP. А также ещё тогда не знал про spl_autoload_register, кстати...

    define('WWW', $_SERVER['DOCUMENT_ROOT']);
    define('ROOT', dirname(WWW));
    spl_autoload_register(function($class)
    {
    $file = ROOT.'/models/'.$class.'.php';
    if (is_readable($file))
    require($file);
    });

     
  • 7.104, SenaIVV (?), 15:30, 07/12/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    И, кстати, на счет скорости проверки наличия - не все так очевидно. Я до теста считал, что прямое включение без проверки наличия файла и код в обработчике ошибок - быстрее (без кэширования, первый запрос такого типа отрабатывает быстрее, чем первая проверка наличия файла). Но при повторном вызове, file_exists сразу начинает выигрывать.
     
  • 6.133, hellobillyboy (?), 20:32, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    о! классное решение, выложи пожалуйста посмотреть на кодохостинг
    https://govnokod.ru/php

    спасибо!

     
  • 5.85, blblblblbl (?), 13:51, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    flock не панацея
    нужно делать pid-файл через fopen x+ и проверять статус процесса, если файл существует
     
     
  • 6.92, Sw00p akaJerom (?), 14:42, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    версионность через симлинк
     
     
  • 7.98, blblblblbl (?), 15:07, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    это уже детали реализации, можно и через mv, смотря что делается, новый tmp тоже надо лочить и писать правильно
     
  • 7.99, blblblblbl (?), 15:09, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    т.е. если делаешь демона, то симлинк тут никаким боком, в остальном страдать версионностью можно разными способами :)
     
  • 5.124, fi (ok), 18:12, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    > используйте flock:

    Это только если вы тоже хотите его юзать, но есть часто используемая технология флагов путем создание пустых файлов.

     
  • 3.78, blblblblbl (?), 13:07, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Эксплоит работает, но ровно в одном случае: данные от юзера не фильтруются и используются напрямую.
     
     
  • 4.108, Ilya Indigo (ok), 16:04, 07/12/2018 [^] [ответить]    [к модератору]  
  • –1 +/
    > Эксплоит работает, но ровно в одном случае: данные от юзера не фильтруются
    > и используются напрямую.

    Понятно, это как новость от супер-пупер антивирусной компании найден супер-пупер троян под Linux!
    Но как бы невзначай, для работы трояна требуются root привилегии. :-)

     
  • 3.111, пох (?), 16:48, 07/12/2018 [^] [ответить]    [к модератору]  
  • –1 +/
    > file_exists() - бесполезная ф-ия, так как не проверяет доступен ли файл может он существует,
    > но него прав нет?

    откуда в нормальной системе возьмется такой файл? В том месте, где появляются какие-то файлы, доступные php? (к тому же *тебе* может и не нужны на него права - может это просто статическая картинка, ее открывает веб-сервер,а не скрипт на php)

    > is_readable() - когда нужно подключить или вывести,

    полагаю, он точно так же исполняет подсунутый phar.

    > /tmp или иное место заданное в конфиге для этого должно быть с noexec флагом

    милый ребенок, ты вообще хоть что-нибудь понял в описанном эксплойте, кроме "у меня этого не может быть, я же умный и начитанный"?

     
  • 2.127, Аноним (127), 18:28, 07/12/2018 [^] [ответить]     [к модератору]  
  • +/
    https blog ripstech com 2018 new-php-exploitation-technique https securityb... весь текст скрыт [показать]
     
     ....нить скрыта, показать (49)

  • 1.11, Аноним (11), 23:15, 06/12/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +8 +/
    > Прекращена поддержка платформы BeOS

    Не ожидал от них такой подлости! Прямо удар в спину!

     
  • 1.12, Аноним (12), 23:28, 06/12/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    > При вызове функций и методов теперь допускается оставление запятых в конце списка аргументов, например, "unset($foo, $bar, $baz,)";

    Но зачем?

     
     
  • 2.13, Пользователь Debian (?), 23:32, 06/12/2018 [^] [ответить]    [к модератору]  
  • +8 +/
    чтобы(
      можно,
      было,
      вот,
      так,
    )
     
  • 2.14, КГБ СССР (?), 23:32, 06/12/2018 [^] [ответить]     [к модератору]  
  • +/
    Возможно, через ЭТО уже кто-то как-то зловредничал ... весь текст скрыт [показать]
     
  • 2.15, Аноним (15), 23:38, 06/12/2018 [^] [ответить]    [к модератору]  
  • +9 +/
    unset(
        $very_long_name,
        $very_very_long_name,
        $very_very_very_long_name,
    //  $very_very_very_very_long_name
    );

    для того

     
  • 2.17, Антон (??), 23:53, 06/12/2018 [^] [ответить]    [к модератору]  
  • +/
    слизали с js, хотя может в js тоже взяли откуда то.
    На самом деле довольно удобно, можно комментить ненужное и добавление параметра влечет изменение одной строки в гит, а не двух.
     
     
  • 3.18, Q2W (?), 00:11, 07/12/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    В perl'е это уже кучу лет можно.
    Просто супер удобно!
     
     
  • 4.25, Аноним (25), 01:20, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Write-only language.
     
     
  • 5.33, Аноним (33), 04:48, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Если у Вас проблемы с чтением такого(https://github.com/bugzilla/bugzilla/blob/5.0/editusers.cgi) кода, то и код современного PHP, понять Вы не сможете.
     
  • 5.34, Аноним (34), 05:50, 07/12/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    Write-only аноним
     
  • 4.42, Антон (??), 09:18, 07/12/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    мне этого сильно не хватает в SQL. Я уже задолбался эту последнуюю запятую ставить и удалять
     
     
  • 5.66, vedronim (?), 11:49, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    А где там массивы?
     
     
  • 6.73, ъ (?), 12:23, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    В инсертах, например.
     
  • 3.134, Junior frontend developer (?), 21:14, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Во все языки это добавляют со временем
     
  • 2.21, Григорий Федорович Конин (?), 00:42, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    затем же зачем в массиве можно оставлять запятую :)
     
  • 2.40, Rom1 (??), 08:16, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Для удобства
     
  • 2.87, SenaIVV (?), 13:56, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Это как раз-таки самое нужное, а то я давно устал уже при динамических строках массивов удалять последний символ запятой(при чем разными с..а функциями для utf-8 и windows-1251).
     
  • 1.19, Ilya Indigo (ok), 00:22, 07/12/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    > При сборке с опцией configure --with-password-argon2 в функциях password_hash()...

    Да сдалась 300 лет эта убогая ф-ия для идиотов, в которой ещё заботливо запретили использовать свою соль!
    Лучше бы в hash_hmac() алгоритмы bcrypt и argon2(i|id|d) завезли.
    А так всё равно приходится пароли алгоритмом sha3-512 хешировать. :-(

    А так ничего сильно полезного пока не увидел, но и нарушающего совместимость тоже.

    P.S. Прошёл уже год а документация по sodium всё также отсутствует даже на английском.
    https://secure.php.net/manual/en/book.sodium.php

     
     
  • 2.24, blblblblbl (?), 01:19, 07/12/2018 [^] [ответить]    [к модератору]  
  • +2 +/
    У тебя что, соль какая-то особая, забористая?
    Чем обычная не устраивает, а?
     
     
  • 3.46, Ilya Indigo (ok), 09:32, 07/12/2018 [^] [ответить]     [к модератору]  
  • –1 +/
    Особенная, состоящая из статической и динамической части, при этом статическая х... весь текст скрыт [показать]
     
     
  • 4.55, Аноним (55), 10:42, 07/12/2018 [^] [ответить]    [к модератору]  
  • +2 +/
    > а главное только я знаю как готовить хэш, и только я знаю как его проверять

    Security by obscurity? Спец, без сомнения!

     
  • 4.56, blblblblbl (?), 10:43, 07/12/2018 [^] [ответить]     [к модератору]  
  • +/
    Т е утекла каким-то образом статическая часть, здравствуй генерация новых парол... весь текст скрыт [показать]
     
     
  • 5.61, Ilya Indigo (ok), 11:06, 07/12/2018 [^] [ответить]     [к модератору]  
  • +/
    1 НЕТ Без динамической части соль бесполезна, для генерации нужна и соль и данн... весь текст скрыт [показать]
     
     
  • 6.68, blblblblbl (?), 12:02, 07/12/2018 [^] [ответить]     [к модератору]  
  • +/
    1 зачем тогда статический кусок без него это такой же хеш динамическая соль ... весь текст скрыт [показать]
     
     
  • 7.74, Ilya Indigo (ok), 12:35, 07/12/2018 [^] [ответить]     [к модератору]  
  • +/
    Затем, чтобы 1 При получении доступа к БД злоумышленник не смог получить всю сол... весь текст скрыт [показать]
     
     
  • 8.94, Sw00p akaJerom (?), 14:54, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    идея не плохая с разделением на части соли, но прикол в том, что постановка задачи у вас изначально не правильна, она равносильна этому - есть шифрованные данные (пример в общем, и не обязательно про хеширование), но криптоаналитик не знает алгоритм, при взломе шифра, уже предполагается, что криптоаналитик знает все о шифре, и все тут дорлжно упираться в ключ (только он не известен), говорить об "атакующий не знает алгоритма" - смысла нет. И в вашем случае говорить, что атакующий не видит части соли прописанной в конфиге, имея доступ только к бд, всего лишь навсего "безопасность через неясность", что категорически не приемлемо в самом понятии криптографии (самообман). Ну есть только доступ к бд, а что мешает сделать на подобии load_file('config.php') и тому подобное? (немного поутрировал)
     
     
  • 9.101, Ilya Indigo (ok), 15:22, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Я с вами не согласен.
    > уже предполагается, что криптоаналитик знает все о шифре

    1 Без ssh доступа к серверу нет, а если доступ получен, то смысла уже нет.
    > "безопасность через неясность"

    ДОПОЛНИТЕЛЬНАЯ безопасность...
    Безопасности много не бывает, если при этом она не вредит производительности и удобству авторизации.
    Это как сказать, зачем закрывать дверь на замок, ведь в наше время есть куча способов открыть любой замок, по этому замок на двери не нужен, а всё будет упираться в...
    > а что мешает сделать на подобии load_file('config.php')

    Отсутствие ssh доступа к серверу. при наличие которого уже ничего не нужно будет делать.

    P.S. Поставленная мной задача обломать того кто получит доступ к СУБД чтобы заменить хэш админа и зайти как ни в чём не бывало под админом, при этом сохранить надёжность хэша, удобство авторизации и уменьшить объём кэша решается.

    Я не говорю, что к СУБД можно будет подпускать кого угодно ничего не опасаясь!
    Это просто дополнительная защита, которая в случае эксплоита субд или кривых рук админа может или защитить или заставить взломщика предпринять более заметные действия например вход по ssh, который в auth.log ssh сразу будет заметен, в отличии от access.log apache.

     
     
  • 10.106, Sw00p akaJerom (?), 15:50, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    > Я с вами не согласен.
    >> "безопасность через неясность"

    принято, если со мной не согласны, то посоветую более вторитетный источник - Б. Шнайер, почитайте его труды, "на пальцах" все разъясняет.

    > ДОПОЛНИТЕЛЬНАЯ безопасность...

    заключил бы это в кавычки, "безопасность" - процесс, а не метод.

    > Безопасности много не бывает, если при этом она не вредит производительности и
    > удобству авторизации.

    Она должна быть достаточной и необходимой с условиями требований.

    > есть куча способов открыть любой замок,

    ну вот отлично, значить нужно прийти к выводу, что делается "что-то не так"

    >по этому замок на двери не нужен, а всё будет упираться в...

    дверь то, тогда зачем?


    >> а что мешает сделать на подобии load_file('config.php')
    > Отсутствие ssh доступа к серверу. при наличие которого уже ничего не нужно
    > будет делать.

    load_file - имелось ввиду средствами самой СУБД.

    > как ни в чём не бывало под админом

    ну в принципе админом быть и не нужно, если достаточно взять из базы всю информацию, которая собственно добавляется админом, если тока через админку там получить возможность для загрузки файлов и т.п. ну разные вектора и развития

     
  • 5.93, Sw00p akaJerom (?), 14:44, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    на то и коллизии существуют
     
     
  • 6.100, blblblblbl (?), 15:20, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    какова вероятность коллизии у bcrypt с blowfish или argon2?
    тупой брутфорс на видеокарте на 4 порядка медленнее, чем у того же sha512

    в конце-концов выяснилось, что защищается от подмены хеша в базе, чтоб не дать залогиниться потом под паролем для этого хеша

     
     
  • 7.105, Sw00p akaJerom (?), 15:38, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    > какова вероятность коллизии у bcrypt с blowfish или argon2?

    ровно такая же как и md5, все зависит от битности.

    > тупой брутфорс на видеокарте на 4 порядка медленнее, чем у того же
    > sha512

    от чего зависит эта "медленность" ?

    > в конце-концов выяснилось, что защищается от подмены хеша в базе, чтоб не
    > дать залогиниться потом под паролем для этого хеша

    что имелось тут ввиду я не понял

     
     
  • 8.110, blblblblbl (?), 16:46, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    > ровно такая же как и md5, все зависит от битности

    а в реальной жизни, без применения велосипедов?
    тот же солёный md5 можно, но реально сложно же

    > от чего зависит эта "медленность" ?

    насколько я понимаю, там и потребление памяти, и многораундовость влияют, и скорее всего параллелить расчёты нельзя

    > что имелось тут ввиду я не понял

    товарищ выше написал, зачем он так делает

     
     
  • 9.112, blblblblbl (?), 16:49, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Собственно я к тому, что любой хеш нам только даёт возможность распознать утечку и инициировать смену паролей за разумное время, но не даёт 100% гарантии защищённости.
     
  • 2.26, blblblblbl (?), 01:21, 07/12/2018 [^] [ответить]     [к модератору]  
  • +/
    ну если так надо, берёшь С и завозишь пулл-реквестом зачем ... весь текст скрыт [показать]
     
     
  • 3.49, Ilya Indigo (ok), 09:42, 07/12/2018 [^] [ответить]     [к модератору]  
  • +/
    Трачу от недели до месяца на разбор всех тонкостей как это делается, реквестю, и... весь текст скрыт [показать]
     
  • 2.47, Мимокрокодил (?), 09:34, 07/12/2018 [^] [ответить]    [к модератору]  
  • –1 +/
    http://php.net/manual/ru/function.password-hash.php
     
     
  • 3.51, Ilya Indigo (ok), 09:45, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    И что?
    Внимание

    Эта опция была объявлена устаревшей начиная с PHP 7.0.0. Рекомендуется использовать автоматически генерируемую соль.

     
     ....нить скрыта, показать (19)

  • 1.28, java developer (?), 02:25, 07/12/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    отличный релиз замечательного инструмента. Всех поздравляем!
     
  • 1.39, Аноним (39), 08:00, 07/12/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +4 +/
    В целом, PHP стал похож на нормальный язык. В него бы ещё объектно-ориентированные примитивные типы и коллекции, да перегрузку операторов и можно  жить.
     
     
  • 2.43, nobody (??), 09:23, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Боюсь, что поезд ушёл. Ещё и оставив за собой огромный шлейф "былой славы"
     
  • 2.45, Онаним (?), 09:30, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Ну вот да, перегрузки операторов зело не хватает...
     
  • 2.48, Аноним (48), 09:35, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    >ещё объектно-ориентированные примитивные типы

    Зачем они тебе?

     
     
  • 3.52, Аноним (52), 10:09, 07/12/2018 [^] [ответить]     [к модератору]  
  • +/
    Затем, чтобы можно было сделать так someArray- и увидеть все методы для работы... весь текст скрыт [показать]
     
  • 1.53, Попугай Кеша (?), 10:25, 07/12/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • –2 +/
    Все-то я согласен с вами. И все правильно пишите. PHP плохой, PHP ужасный, функция проверки наличия файла может запускать чужой код.

    И я вас понимаю. Как разработчик.

    Но вот звоню я другу (друг делает проекты для частников и не только).
    И спрашиваю: "Как дела, на чем пишите проекты?". На PHP - отвечает. Почему, интересуюсь? А он - "Ну ты понимаешь, на рынке PHP-разработчиков пруд пруди, платить им много не надо, можно быстро взять человека и доучить с улицы, что сделать нужно". Далее нужно где-то разворачивать. Nginx есть у всех, либо Apache. И любой полуобразованный админ может либо знаком с ними, либо знает как разворачивать. В общем, в любом захолустье знают про PHP как разрабы, так и админы. И искать долго не надо никого. И платить мало. Выгодно, в общем!

    Так что я с ним соглашусь. Для малого-среднего бизнеса это выгодно. Вот такой "народный" язык программирования получается. Это и не хорошо, и не плохо. Это данность.

    А в фирмах крупных, конечно, где бабки на бюджеты пилятся и осваиваются, там можно и Java взять на бекенд, или вашу эту хипстоту - Go/Ruby/Rust, хотите - C#.

    А народ - а народ оставьте в покое. Пусть пишет на своем PHPю

     
     
  • 2.57, blblblblbl (?), 10:58, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Всякие расплодившиеся курсы программирования говорят, что "можно быстро взять человека и доучить с улицы" питону и гошечке.
     
     
  • 3.58, Andrey Mitrofanov (?), 11:01, 07/12/2018 [^] [ответить]     [к модератору]  
  • +/
    Нет Расплодившиеся курсы говорят, что человеки с улицы таки _покупают_ распло... весь текст скрыт [показать]
     
  • 3.59, Попугай Кеша (?), 11:02, 07/12/2018 [^] [ответить]     [к модератору]  
  • +2 +/
    Есть спрос - есть предложение Да, можно Если загрузить человека несложной рабо... весь текст скрыт [показать]
     
     
  • 4.81, blblblblbl (?), 13:31, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    > Вкачивают базу по PHP

    какой такой php, везде только и видно питон, го и жс :)
    скоро, очень скоро там будет много макак, это уже заметно, вся илитность на хайпе пропала

     
  • 1.67, DmA (??), 11:51, 07/12/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    тут скорей всего быстрота нужна разработки для клиента, PHP позволяет выстрелить в ногу, если клиент так хочет. О конечной стоимости владения  своим сайтом клиент не сильно задумывается. Поэтому PHP -быстрее и дешевле
     
     
  • 2.69, Попугай Кеша (?), 12:10, 07/12/2018 [^] [ответить]     [к модератору]  
  • +/
    Сравните сложность настройки сервера на PHP цену за сервер с поддержкой PHP в ... весь текст скрыт [показать]
     
     
  • 3.80, blblblblbl (?), 13:27, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Разницы между настройкой nginx + php-fpm или nginx + python(ruby, go) нет, всё это делается за одно и то же время, виртуалка нужна и там, и там и за те же деньги.
     
     
  • 4.95, Попугай Кеша (?), 14:55, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Shared уже не использует никто? Я просто не знаю, расскажите
     
     
  • 5.114, пох (?), 16:56, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    скажу так - те, кто его используют, могли бы свою единственную страничку с телефоном разместить в гуглосайтах и не тратить деньги.

    но, поскольку не знают об их существовании - все еще платят макакам. Впрочем, недорого.

     
     
  • 6.115, Попугай Кеша (?), 17:03, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Люди как не странно не любят обучаться. По привычке платят. Таких много.
     
  • 4.96, Попугай Кеша (?), 14:56, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    Еще интересно за сколько вы Java развернете
     
     
  • 5.123, blblblblbl (?), 18:11, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    хз, у меня своего софта на джаве нет :)
    а вот эластик с полпинка заводится, стильно, модно, молодёжно
     
  • 2.113, пох (?), 16:54, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    грошовому клиенту нет необходимости задумываться о "конечной стоимости" - его сайт вместе с его лавочкой (сайт иногда даже позже, если за хостинг заплачено на год вперед) через полтора года перестает существовать вместе с децльным бизнесом.

    меня больше удивляет, зачем крупные лавки используют какие-то другие технологии - тот же vtb, с его привычкой раз в год менять сайт (целиком, не то чтобы что-то по мелочи, а вообще абсолютно другой и вид, и использование, и снова все приходится искать хз где и натыкаться на глюки где попало) - от найма разработчиков подешевле явно бы выиграл.

     
     
  • 3.125, blblblblbl (?), 18:12, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    это ж осваивание бюджета, ты что =)
    других причин постоянно передылывать сайт нет
    как ещё честному манагеру денег потырить
     
     
  • 4.138, пох (?), 23:24, 08/12/2018 [^] [ответить]    [к модератору]  
  • +/
    > это ж осваивание бюджета, ты что =)
    > других причин постоянно передылывать сайт нет
    > как ещё честному манагеру денег потырить

    а, точно - а поскольку менеджер каждый раз разный, то и карманная контора, выигрывающая конкурс, каждый раз новая, и, разумеется, старый сайт весь неправильный, немодный, не молодежный, надо все-все-все переделать (а на деле - "хз, я в первый раз этот фреймворк вижу, фронтенд тоже на незнакомом мне...да нунахрен в этом копаться, давайте сделаем на нашем обычном матерьяле, плевать что пользователям заново привыкать")

     
  • 1.76, Аноним (76), 12:57, 07/12/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    а я ещё на 5.6 сижу :-(
     
     
  • 2.109, DmA (??), 16:28, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    провинциал :)
     
  • 2.126, Аноним (126), 18:17, 07/12/2018 [^] [ответить]     [к модератору]  
  • –1 +/
    У меня вот в компании только недавно подняли минимальную версию до 5 6 для выпус... весь текст скрыт [показать]
     
     
  • 3.139, пох (?), 23:24, 08/12/2018 [^] [ответить]    [к модератору]  
  • +/
    > Противные шареды не желают обновляться, противные клиенты не хотят в этом разбираться
    > - грустные разработчики снова и снова лепят костыли на 5.6.

    а так ведь хочется обмазаться свеженьким!


     
  • 1.79, Аноним (116), 13:24, 07/12/2018 [ответить] [показать ветку] [···]     [к модератору]  
  • +/
    Прелесть PHP - в его монолитном рантайме, в котором есть почти всё, что нужно дл... весь текст скрыт [показать]
     
  • 1.128, Аноним (127), 18:32, 07/12/2018 [ответить] [показать ветку] [···]     [к модератору]  
  • +/
    https blog ripstech com 2018 phpbb3-phar-deserialization-to-remote-code-execut... весь текст скрыт [показать]
     
     
  • 2.130, Аноним (127), 18:40, 07/12/2018 [^] [ответить]    [к модератору]  
  • +/
    https://rdot.org/forum/showthread.php?t=4379

     
  • 1.137, Аноним (137), 22:52, 08/12/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Если пых переписать на Rust, то он станет хипсторским и его перестанут называть устаревшим! А еще безопасность будет!
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2018 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor