<rmcreative>

RSS

Все заметки с тегом «Безопасность»

  1. Случайные байты, числа и UUID в PHP

    31 января 2016

    Tom Worster, специалист по безопасности, помогающий поддерживать её в Yii на отличном уровне, поделился решениями для чистого PHP. Решения отличаются краткостью и отсутствием абстракции, что позволяет легко их проверить и избежать неприятных побочных эффектов.

    Пользуемся

    Комментировать
  2. Составные части хеш-строки bcrypt

    26 ноября 2015

    Хороший способ хранения данных для аутентификации — хеш-строки bcrypt. В PHP это реализуется при помощи crypt с алгоритмом blowfish. В более поздних версиях PHP — при помощи password_hash. В Yii для этого есть Security::generatePaswordHash(). Выглядит строка на выходе вот так:

    $2y$13$YUUgrko03UmNU/fe6gNcO.Hka4lrdRlkq0iJ5d4bv4fK.sKS.6jXu

    Длина в случае пароля всегда 60 символов.

    • 2y - версия алгоритма bcrypt. Мы используем blowfish, так что в новых версиях PHP должна быть всегда 2y.
    • 13 - cost. Стоимость вычислений. 2^13 итераций функции формирования ключа.
    • Оставшееся — конкатенированные соль и хеш, закодированные через base64 с немного нестандартным набором символов. Первые 22 символа — 16 байт соли. Оставшееся — хеш.

    При сравнении пароля bcrypt достаёт версию алгоритма, cost и соль из хеш-строки сохранённого пароля. Далее, используя их, вычисляет хеш нового пароля и сравнивает с сохранённым хешем.

    4 комментария
  3. Уязвимость dev/random и других UNIX-устройств под Windows

    20 октября 2015

    Разрабатывая код для PHP не забывайте про Windows.

    Скриншот подготовил thefsb.

    12 комментариев
  4. Перестаньте использовать mcrypt

    13 мая 2015

    Сегодня в очередной раз всплыла статья об распространённых ошибках при реализации шифрования. Сама по себе она ничего так, но местами учит плохому. А именно, использовать mcrypt.

    Почему его не стоит использовать

    mcrypt не обновлялся более десяти лет и не планирует. Авторы его забросили. В нём есть серьёзные недоработки.

    И что делать?

    Мы в Yii от него ушли в сторону OpenSSL, чего и вам советую. Реализовал переход, в основном, Tom Worster. У него есть серия интересных постов на тему.

    8 комментариев
  5. Проверяем и лечим ShellShock

    1 октября 2014

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

    Проверить наличие уязвимостей можно специальным скриптом и извне через специальный сервис, обновляться в каждой ОС немного по-разному. Для ubuntu это выглядит так:

    sudo apt-get update && sudo apt-get install --only-upgrade bash
    
    4 комментария
  6. Yii 1.1.15 (исправление безопасности)

    30 июня 2014

    Вышел Yii 1.1.15, исправляющий проблему безопасности, найденную в 1.1.14. Более ранние версии не затронуты. Если вы используете его, следует обновиться. 1.1.15 полностью совместим с 1.1.14.

    Уязвимость затрагивает CDetailView. Если ваше приложение берёт значение value от пользователя, то атакующий имеет возможность выполнить произвольный PHP скрипт на вашем сервере. Мы не раскрываем подробностей сразу чтобы дать время обновиться. По нашим данным детали пока известны только основной команде разработчиков фреймворка.

    Уязвимости присвоен номер CVE-2014-4672.

    Забрать дистрибутив можно, как обычно, на yiiframework.com или обновиться через Composer.

    5 комментариев
  7. Идентификация пользователя без cookie, Storage, flash и Java

    21 августа 2013

    Нашёлся интересный способ идентифицировать пользователя без использования cookie, какого-либо браузерного Storage, flash или Java и работающий при отключенном JavaScript за VPN.

    Идея очень проста. Браузер может довольно длительное время хранить кеш. При использовании ETag клиент получает от сервера хеш, который кешируется вместе с данными и далее посылается обратно при каждом запросе этих данных. Пока данные не меняются, хеш посылается одинаковый, что позволяет идентифицировать пользователя.

    Полное описание с примером

    3 комментария
  8. Yii2, контроль доступа

    25 июня 2013

    В Yii 1.1 фильтр accessControl был очень гибким:

    // blacklist
    return array(
      array('deny',
        'users' => array('*'),
        'actions' => array('index'),
      ),
    );
     
    //whitelist
    return array(
      array('allow',
        'users' => array('*'),
        'actions' => array('view'),
      ),
      array('deny'),
    );

    Он позволял контролировать доступ как в стиле blacklist, так и whitelist. В Yii2 остался только whitelist. Это единственный нормальный и действительно безопасный подход в данной ситуации:

    //whitelist
    public function behaviors()
    {
      return array(
        'access' => array(
          'class' => 'yii\web\AccessControl',
          'rules' => array('allow' => true,
              'users' => array('*'),
              'actions' => array('view'),
          ),
        ),
      );
    }
    26 комментариев
  9. Приняли SHA-3

    3 октября 2012

    NIST принял решение, что же станет SHA-3. Из 64 конкурсантов был выбран Keccak. Выбирали пять лет.

    SHA-2 пока не сломали, но то, что уже есть резервный вариант, радует. Тем более SHA-3 обсчитывается быстрее.

    Ещё раз напомню, что использовать SHA и md5 для хеширования паролей не стоит.

    4 комментария
  10. Запомнить во всех браузерах

    26 апреля 2012

    Не так давно задался вопросом кроссбраузерного «запоминания» пользователя на сайте. Не потому, что действительно была такая потребность. Просто в пришло в голову и решил проверить, насколько это возможно. Оказывается, вполне возможно и даже применяется.

    Логика подсказывает, что для того, чтобы несколько браузеров считали какое-то значение, значение должно быть установлено в нечто, которое всеми браузерами используется. Первым на ум приходит Flash. Его «Flash Cookie» или Local Shared Object оказывается вполне рабочим решением, которое используется, например, в Яндексе. Есть и в готовом виде с обёрткой для JavaScript.

    Также стоит упомянуть evercookie. Штука очень «злая». Хранит информацию огромной кучей разных способов: обычные cookie, Flash, Silverlight, HTML5 LocalStorage и другие. Всего их 13. При попытке удаления части данных, библиотека их восстанавливает. Отлично должно подойти для отлова клонов, хотя, конечно, тут уже попахивает печеньками с тёмной стороны.

    10 комментариев