Безопасность Yii приложения

В тексте будут приводится приемы настроек безопасного Yii 1.1.x приложения. По шагам это можно сделать наиболее надежно и последовательно. Если вы найдете их неполными то покажите иное в коментарии.
  1. Удалить следующую строку в режиме production:
    defined('YII_DEBUG') or define('YII_DEBUG',true);
    и установить если нужно;) другую:
    header('X-Powered-By: ASP.NET, ARR/2.5, ASP.NET');
  2. Установить в критических папках пустышки index.php:
    Error 404
    и заглушку .htaccess
    deny from all
  3. Нужно отключить gii функционал в конфигурац. файле.
  4. Проверить права выставленные на папки и файлы генерируемые Gii ./framework/web/CAssetManager.php:
    public $newFileMode=0666;
    public $newDirMode=0777;
    Заменим их после всех использований gii соответственно на 0664 and 0775. После этого выставляем права на наши папки используемого приложения окмандами: (заменив webroot на ваше значение)
    sudo chmod -R 0755 /webroot/
    sudo chmod -R 0774 /webroot/protected/runtime/
    sudo chmod -R 0774 /webroot/assets/
  5. Раскоментировать в файлах (модулей) контроллеров AJAX валидацию полей форм.
    return array(
       'components'=>array(
          'request'=>array(
             'enableCookieValidation'=>true,
          ),
       ),
    );
  6. По умолчанию проверка cookie отключена. Для еѐ включения необходимо в конфигурации приложения
    настроить компонент CHttpRequest следующим образом:
    
    
  7. Вытащить runtime из protected:
    protected/config/main.php, protected/config/console.php:
    >>>>>>
    return array(
        'runtimePath' => Yii::getPathOfAlias('system') . '/../runtime/',
        ...
    );
    >>>>>>
    
  8. Установить файлы .gitignore в корни папок с непубличными данными:
    # environment *nix
    !.htaccess
    .*
    !.gitignore
    *~
    
    # environment Windows
    # Windows
    Thumbs.db
    Desktop.ini
    
    # composer
    vendor/*
    composer.phar
    composer.lock
    
    # netbeanse
    nbproject/*
    *.swp
    */*.swp
    nbactions.xml
    nb-configuration.xml
    .nb-gradle/
    
    #Yii files
    protected/runtime/*
    
  9. Уменьшить время существования каждого сеанса выдаваемого пользователю в разумных пределах например на 1/2/6 часов.
    
    
  10. Все файлы javascript подгружаемые со сторонних ресурсов переместить на свои CDN или же папки.
    
    
  11. Если можно переводить на https соединение с сервером.
    
    
  12. Делать бакапы на шифрованных архивах.
    
    
  13. Протестировать и устанить ошибки валидации на всех формах ввода данных.
    
    
  14. Проверить и устранить все action в методе accessRules() для всех используемых контроллеров.
    
    
  15. Если вы используете HTTPS и хотите перенаправить пользователей на защищенные страницы вашего сайта, добавьте в файл .htaccess следующие строки:
    RewriteEngine On
    RewriteCond %{HTTPS} !on
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
    
  16. Во все каталоги, доступные для записи, закачиваем (или добавляем строчки к существующему) .htaccess с содержимым:
    php_flag engine 0
    AddType "text/html" .php .cgi .pl .fcgi .fpl .phtml .shtml .php2 .php3 .php4 .php5 .asp .jsp
    
    Или же просто пишем запрещаем все выполнять как PHP:
    deny from all
    
  17. Сделаем проверки вводимых форм на xss:
    $rules = array(
    ..
    array('body', 'filter', 'filter' => array($obj = new CHtmlPurifier(), 'purify')),
    ...
    );
  18. Добавляем запрет на использование файлов по типу в .htaccess:
    # Блокируем доступ к некоторым файлам по расширению:
    <FilesMatch ".(htaccess|htpasswd|bin|ini|phar|json|sql|git|log|sh|bat|lock|yiic)$">
     Order Allow,Deny
     Deny from all
     </FilesMatch>
    # Работа всего оставльного должна быть указана ниже:
    ###
     
    

Комментариев нет :

Отправить комментарий

Благодарю за ваше участие!