1. Убедитесь, что все важные файлы закрыты для доступа из вне. К примеру файл /config/config.ini содержит данные для подключения к базе данных. Проверьте правила nginx запрещающие доступ к этому файлу из браузера.

Не храните логи работы вашего веб-приложения в открытом доступе. Если лог станет доступен злоумышленнику, то он сможет понять архитектуру вашего приложения и это упростит ему задачу поиска уязвимости.

Пример. Закрыть доступ к файлам по расширению.

location ~* \.(engine|inc|info|ini|install|log|make|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$|\.php_ {
deny all;
}

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

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

Пример. Запретить использование php файлов в директории includes

location ~* /includes/.*\.(php|php3|php4|php5|php6|phps|phtml)$ {
deny all;
}

Часто, такие популярные скрипты, которые клиенты используют для работы с базой данных (экспорт/импорт) становятся причиной взлома. Не оставляйте подобные скрипты в document root, или закрывайте доступ к ним.

Не оставляйте резервные копии базы данных, архивы с сайтом в document root.

 

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

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

 

3. Избегайте неэкранированных аргументов получаемых из строки браузера.  Если ваш скрипт принимает на вход какие то параметры (из uri), то проверьте корректность данных которые вы получаете. Особенно если осуществляется работа с базой данных.  Полезная функция для проверки таких аргументов:

 

htmlspecialchars($text, ENT_QUOTES, 'UTF-8');

 

4. Если вы используете сторонние библиотеки, вендоры, плагины, то обязательно проверьте папки этих дополнений на предмет тестовых скриптов. Зачастую с каким-нибудь скриптом поставляется директория examples полная php скриптов которые может использовать злоумышленник.

 

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

Статья о том как настроить http авторизацию есть в нашей документации http://elasticweb.org/ru/documentation/42

 

6.  Не устанавливайте права на файлы 777 (chmod). Это не безопасно.  

 

7. Подпишитесь на security рассылку вашей CMS. Будьте в курсе возможных уязвимостей и поддерживайте актуальную версию CMS.

безопасность, хостинг