среда, 9 февраля 2011 г.

Безопасность сайта на Wordpress


1) Иногда возникает потребность в закрытии от индексации папок, для этого прописываем в robots.txt следующий код:
    Disallow: /wp-*
Вместо wp-* указываете нужный вам файл или папку.



2) Устанавливаем блокировку по IP для входа в административную панель блога.
Для этого необходимо в файл .htaccess вписать следующий код
    <Files wp-login.php>
    Order deny,allow
    Deny from All
    Allow from 123.456.789.0
    </Files>
Вместо 123.456.789.0 укажите Ваш статичный IP.

3) Необходимо защищаться от XSS атак.
Для этого в файл .htaccess вставить следующий код:
    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
    RewriteCond %{QUERY_STRING} GLOBALS (=|\[|\%[0-9A-Z]{0,2}) [OR]
    RewriteCond %{QUERY_STRING} _REQUEST (=|\[|\%[0-9A-Z]{0,2})
    RewriteRule ^(.*)$ index.php [F,L]

4) Защищаем блог от хотлинка.
Для этого необходимо в файл .htaccess добавить следующий код:
    RewriteEngine On
    #Заменяем ?mysite\.ru/ на адрес вашего сайта
    RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.ru/ [NC]
    RewriteCond %{HTTP_REFERER} !^$
    #Заменяем /images/nohotlink.jpg на название вашей картинки для личера.
    RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]

5) Устраняем возможность просматривать директории на блоге.
Для этого необходимо в файл .htaccess и добавить следующий код:
    Options -Indexes

6) Для повышения безопасности рекомендую изменить префикс БД.

7) Удаляем следующие файлы для повышения безопасности блога: readme.html, license.txt и install.php.
Первые два файла удалять необходимо, чтобы злоумышленник не узнал версию вашего wordpress движка, а третий, чтобы нельзя было установить заново блог в случае форс-мажора.

8) Защищаем файл wp-config, который хранит важную информацию от базы данных.
Для защиты необходимо в файл .htaccess прописать следующий код:
    <files wp-config.php>
    order allow,deny
    deny from all
    </files>

9) Изменяем расположение файла wp-config.php.
Файл wp-config.php можно перенести на один уровень вверх для повышения безопасности блога.

10) Необходимо убрать ошибку о неверно набранном логине/пароле при попытке злоумышленником подобрать пароль к админке блога.Для этого необходимо в файле functions.php прописать следующий код:
    add_filter ('login_errors',create_function ('$a', «return null;»));
Если возникнут проблемы при входе в административную панель уберите этот код.

11) Защищаемся от зловредных url-запросов.
WordPress неплохо защищён сам по себе, но есть люди пытающиеся с помощью длинных зловредных запросов найти брешь в сайте, поэтому необходимо от этого защититься. Для этого создаем сами простой плагин, который будет проверять все длинные запросы превышающие 255 символов. В случаи обнаружения таких запросов будет появляться страница с ошибкой 414 пользователю.

Для начала заходим в папку wp-content/plugins и создаем там пустой файл blockbadqueries.php. Открываем созданный файл и вставляем следующий код:

<?php
/*
Plugin Name: Block Bad Queries
Plugin URI: perishablepress.com/press/2009/12/22/protect-wordpress-against-malicious-url-requests/
Description: Protect WordPress Against Malicious URL Requests
Author URI: perishablepress.com/
Author: Perishable Press
Version: 1.0
*/
global $user_ID;
if($user_ID) {
if(!current_user_can('level_10')) {
if (strlen($_SERVER['REQUEST_URI']) > 255 ||
strpos($_SERVER['REQUEST_URI'], "eval(") ||
strpos($_SERVER['REQUEST_URI'], "CONCAT") ||
strpos($_SERVER['REQUEST_URI'], "UNION+SELECT") ||
strpos($_SERVER['REQUEST_URI'], "base64")) {
@header("HTTP/1.1 414 Request-URI Too Long");
@header("Status: 414 Request-URI Too Long");
@header("Connection: Close");
@exit;
}
}
}
?>

Затем просто активируйте его в админке как любой другой плагин.

12) Защищаем передачу данных через SSL протокол.
Если ваш провайдер поддерживает SSL протокол, тогда вы можете настроить принудительную передачу данных при работе с административной частью блога при внесении кода в файл wp-config.php:
    define ('FORCE_SSL_ADMIN', true);

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

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