Как запретить доступ на ваш сайт в различных ситуациях?

Как запретить доступ на ваш сайт в различных ситуациях?


1. Запрет перехода на сайт с определенных сайтов.

Для этого существует специальная функция: referer. Она позволяет получить адрес сайта, с которого сделан переход на фаш сайт (vk, twitter, yandex, google, прочие). Есть вариант применения как на php, так и при помощи .htaccess

PHP


<?php
if( strpos( $_SERVER['HTTP_REFERER'], 'запретный_адрес' ) !== FALSE){
print ' текст для вывода ошибки!';
exit();
}
?>


<?php
if( strpos( $_SERVER['HTTP_REFERER'], 'запретный_адрес' ) !== FALSE){
header('Location: адрес отправки');
exit();
}
?>


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

.HTACCESS


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


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


Примеры аналогичные и на пхп, но в первом случае будет перенаправлять по 403-й ошибке forbidden, т.е. ее можно сделать и самому!

2. Блокировка определенных ip

В файл .htaccess внесите запись ниже. Если нужно заблокировать какую нибудь внутреннюю папку в глубине от корня сайта, то закиньте туда файл .htaccess с записью о блокировке. Способ малоэффективен т.к. есть прокси, есть анонимайзеры или как у меня - динамический IP. Но все же стоит привести парочку примеров:

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


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


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

3. Запрет для всех

Представляю комплексное решение: на одном из моих сайтов хранятся файлы, которые можно скачать. Но ссылок нигде нету. Я сам выбираю кому давать их, а кому нет. Во избежание получения листинга(список всех файлов) или взлома этой папки я добавил тут файл .htaccess со строками:

Order Deny,Allow 
Deny from all

ErrorDocument 403 http://ваш-адрес_сайта/403.php
ErrorDocument 404 http://ваш-адрес_сайта/404.php

Options -Indexes


Order deny... - блокирует доступ к этой папке для всех и выводит надпись forbiddden (т.е. ошибку 403). В моем случае - отправляет на специально созданную страницу
Options -Indexes - если нет индексного файла - не дает вывести листинг и тоже отправляет на 403
Понравилась статья "Как запретить доступ на ваш сайт в различных ситуациях?" из раздела Создание сайта » Работа с кодом? Подпишись на RSS. Будь в курсе всего происходящего на сайте
Комментариев: 2 •  Просмотров: 7714   Дата: 24-мар-2012, 09:18

Похожие статьи

Комментарии

#1 crutilka   

Гости
1. Запрет перехода на сайт с определенных сайтов. Работает все нормально...но у меня есть вопросы ..

1)А если мне нужно запретить несколько адресов ? то мне ставить несколько таких кодов ?

2) И запретить адрес с www и без него тоже нужно 2 кода вставлять ?

Может подскажите как можно это реализовать вставляя как можно меньше кодов ?

спасибо
(21 ноября 2012 10:00) • цитировать • •

admin
Цитата: crutilka
Может подскажите как можно это реализовать вставляя как можно меньше кодов ?


Можно при помощи PHP проинклудить специально созданный для этих целей файл с таким вот кодом:

<?php
if( strpos( $_SERVER['HTTP_REFERER'], 'запретный_адрес' ) !== FALSE){
print ' текст для вывода ошибки!';
exit();
}
?>


где просто через запятую перечислять проблемные адреса. В любом случае каждое исключение придется записывать! В движках для таких случаев есть просто поле для ввода. Прописал и нажал ОК
(12 января 2013 22:25) • цитировать • •
b
i
u
s
|
left
center
right
|
emo
color
|
hide
quote
translit
© 2010-2015 artemmian.ru v 7.0: flexyflat tpl Designed by artstudios
Карта сайта HTMLКарта сайта XMLПравообладателям
Яндекс.Метрика