В тексте будут приводится приемы настроек безопасного Yii 1.1.x приложения. По шагам это можно сделать наиболее надежно и последовательно. Если вы найдете их неполными то покажите иное в коментарии.
- Удалить следующую строку в режиме production:
defined('YII_DEBUG') or define('YII_DEBUG',true);
и установить если нужно;) другую:header('X-Powered-By: ASP.NET, ARR/2.5, ASP.NET');
- Установить в критических папках пустышки index.php:
Error 404
и заглушку .htaccessdeny from all
- Нужно отключить gii функционал в конфигурац. файле.
- Проверить права выставленные на папки и файлы генерируемые 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/
- Раскоментировать в файлах (модулей) контроллеров AJAX валидацию полей форм.
return array( 'components'=>array( 'request'=>array( 'enableCookieValidation'=>true, ), ), );
- По умолчанию проверка cookie отключена. Для еѐ включения необходимо в конфигурации приложения
настроить компонент CHttpRequest следующим образом: - Вытащить runtime из protected:
protected/config/main.php, protected/config/console.php: >>>>>> return array( 'runtimePath' => Yii::getPathOfAlias('system') . '/../runtime/', ... ); >>>>>>
- Установить файлы .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/*
- Уменьшить время существования каждого сеанса выдаваемого пользователю в разумных пределах например на 1/2/6 часов.
- Все файлы javascript подгружаемые со сторонних ресурсов переместить на свои CDN или же папки.
- Если можно переводить на https соединение с сервером.
- Делать бакапы на шифрованных архивах.
- Протестировать и устанить ошибки валидации на всех формах ввода данных.
- Проверить и устранить все action в методе accessRules() для всех используемых контроллеров.
- Если вы используете HTTPS и хотите перенаправить пользователей на защищенные страницы вашего сайта, добавьте в файл .htaccess следующие строки:
RewriteEngine On RewriteCond %{HTTPS} !on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
- Во все каталоги, доступные для записи, закачиваем (или добавляем строчки к существующему) .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 - Сделаем проверки вводимых форм на xss:
$rules = array( .. array('body', 'filter', 'filter' => array($obj = new CHtmlPurifier(), 'purify')), ... );
- Добавляем запрет на использование файлов по типу в .htaccess:
# Блокируем доступ к некоторым файлам по расширению: <FilesMatch ".(htaccess|htpasswd|bin|ini|phar|json|sql|git|log|sh|bat|lock|yiic)$"> Order Allow,Deny Deny from all </FilesMatch> # Работа всего оставльного должна быть указана ниже: ###
Комментариев нет :
Отправить комментарий
Благодарю за ваше участие!