Защита сайта — запрет доступа с ip или домена

Запретить доступ к сайту по ip

Привет, ребят! Проблема защиты сайта стоит очень остро в наше время. Я убедился в этом на собственном опыте. Только я запускаю сайт в интернет, он автоматически становится мишенью для всяких хакеров, спамеров и роботов. Поэтому теперь первое о чем я думаю, создавая сайт, это то, как его защитить.

Запретить доступ к сайту по ip

Одним из способов защиты является ограничение доступа к сайту по ip или домену. Например, вы заметили, что ваш сайт атакует один и тот же адрес. Логичным будем просто запретить этому негодяю попадать на ваш сайт. В этой статье расскажу, как закрыть доступ к сайту по ip с помощью htaccess и php.

Как запретить доступ с определенного домена

Для этой цели существует ни один вариант. Так что вы сможете выбрать наиболее удобный для вас.

Как закрыть доступ к сайту с определенного домена

Запрет доступа на PHP

Допустим нужно запретить доступ к сайту для тех кто приходит по ссылкам с определенного домена.

Откройте файл index.php в корне вашего сайта или если это WordPress то header.php, находящийся в папке с активной темой.

В самом начале файла вставьте следующий код:

<?php
if( strpos( $_SERVER['HTTP_REFERER'], 'Вредный_сайт.com' ) !== FALSE){
print 'Вы пришли с Вредный_сайт.com - доступ к сайту с этого домена запрещен!';
exit();
}
?>

Это код ограничит доступ к вашему сайту тем у кого в значении referer будет стоять домен, на который вы накладываете запрет и покажет только надпись, что сайт недоступен.

Есть более интересный вариант. Код ниже наложит запрет к сайту с определенного домена и перенаправит на нужную вам страницу.

<?php
if( strpos( $_SERVER['HTTP_REFERER'], 'Вредный_сайт.com' ) !== FALSE){
header('Location: http://Нужная_страница');
exit();
}
?>

Запрет доступа с определенного домена в htaccess

Еще один вариант, чтобы ограничить доступ к сайту с определенного домена это команда в файле htacces. Этот файл находится в корневой папке сайта. Откройте его и добавьте следующий код, который запретит доступ к сайту:

RewriteCond %{HTTP_REFERER} ^http://www\.Вредный_сайт\.(.*) [NC]
RewriteRule .* - [F]

Так то! Теперь доступ к вашему сайту с плохих доменов закрыт.

Блокировать доступ к сайту по ip

Второй способ направит нарушителя на путь истинный 🙂 Редирект дамы и господа!

RewriteCond %{HTTP_REFERER} ^http://www\.Вредный_сайт\.(.*) [NC]
RewriteRule ^/$ http:///Правильный_адрес

Как закрыть доступ к сайту с определенного IP

Запрет на доступ к сайту по IP при помощи PHP

При необходимости запретить доступ к сайту с определенного ip откройте файл index.php или файл header.php , вообще тот файл с которого начинается вывод страницы. В самом начале пропишите такой php код:

<?php
if($_SERVER['REMOTE_ADDR'] == "xxx.xxx.xxx.xxx"){
echo "Мы против спама!";
}
?>

Запрет на доступ определенных пользователей в htaccess

Рассмотрим способ, как ограничить доступ к сайту с определенного ip в файле htaccess.

Для того, чтобы закрыть сайт для доступа определенному пользователю или группе пользователей, нужно открыть файл htaccess и добавить туда следующие строки:

Order Allow,Deny
 Allow from All
 Deny from xxx.xxx.xxx.xxx //вместо xxx естественно ip

Однако, если есть несколько ip, которым нужно запретить доступ, то IP адреса записываем, через запятую:

Order Allow,Deny
 Allow from All
 Deny from xxx.xxx.xxx.xxx, yyy.yyy.yyy.yyy, zzz.zzz.zzz.zzz

Точно также можно закрыть доступ к сайту для диапазона ip, прописываем в файле лишь первые цифры ip:

Order Allow,Deny
 Allow from All
 Deny from xxx.xxx.xxx

То есть будет ограничен доступ к сайту для всех IP  с xxx.xxx.xxx.1 до xxx.xxx.xxx.255.

Например, если в основном аудитория вашего сайта русскоязычная, то можете запретить доступ по ip зонам для стран Африки, Юго-Восточной Азии, Южной Америки и Карибского бассейна, а также некоторых корпораций и учреждений. Для этого добавьте следующий код в файл htaccess

 

Order Deny,Allow
# AfriNIC:
Deny from 41 102 105 197
# APNIC:
Deny from 1 14 27 36 39
Deny from 42.0.0.0/7
Deny from 49
Deny from 58.0.0.0/7
Deny from 60.0.0.0/7
Deny from 101 103 106
Deny from 110.0.0.0/7
Deny from 112.0.0.0/5
Deny from 120.0.0.0/6
Deny from 124.0.0.0/7
Deny from 126 133 175 180
Deny from 182.0.0.0/7
Deny from 202.0.0.0/7
Deny from 210.0.0.0/7
Deny from 218.0.0.0/7
Deny from 220.0.0.0/6
# LACNIC:
Deny from 177 179 181
Deny from 186.0.0.0/7
Deny from 189
Deny from 190.0.0.0/7
Deny from 200.0.0.0/7
# Networks:
Deny from 3 6 9 11 13 15
Deny from 16.0.0.0/6
Deny from 20.0.0.0/7
Deny from 22 25 26
Deny from 28.0.0.0/7
Deny from 30 33
Deny from 34.0.0.0/7
Deny from 38 40 44 47 48
Deny from 51
Deny from 52.0.0.0/6
Deny from 56.0.0.0/7
Deny from 214.0.0.0/7

 


Также в этом списке присутствуют ip из смешанных зон, но этот код защищает сайт от большего количества непрошеных гостей. IP адреса ARIN лучше не блокировать, а то роботы поисковиков типа Bing, Google, Yahoo не смогут заходить на ваш сайт и соответственно индексации вы никакой не получите.

Ну и напоследок, есть вариант перенаправления посетителей с этих ip на нужную страницу. Это может быть страница на которой например написано, что доступ закрыт:

SetEnvIf REMOTE_ADDR xxx.xxx.xxx.xxx REDIR="redir"
 RewriteCond %{REDIR} redir
 RewriteRule ^/$ http:///Нужная_страница

 

На самом деле все не так сложно как кажется! Попробуйте эти методы и ваш сайт станет более защищенным.

Пишите комментарии, если что-то непонятно или просто понравилась статья

Рекомендую подписаться на мою рассылку, чтобы не пропустить самых важных новостей

С уважением,
Артем Губтор

Также читайте:

Подборка самых нужных плагинов для блога WordPress

Что такое карта сайта и зачем она нужна

Как стать php программистом с нуля до уровня профессионала?

Оцените статью
( Пока оценок нет )
Поделиться с друзьями
Добавить комментарий

4 × 2 =