Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Apache

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Защита с помощью .htaccess
 
 автор: prtygi   (25.05.2011 в 14:34)   письмо автору
 
 

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

  Ответить  
 
 автор: cheops   (25.05.2011 в 14:42)   письмо автору
 
   для: prtygi   (25.05.2011 в 14:34)
 

Отделить такие программы от обычных посетителей невозможно, то что могут скачать обычные посетители, могут скачать и они. Иногда они в пользовательском агенте указывают свою принадлежность, но пользовательский агент легко поддается фальсификации, так как формируется на стороне клиента.

  Ответить  
 
 автор: prtygi   (25.05.2011 в 15:24)   письмо автору
 
   для: cheops   (25.05.2011 в 14:42)
 

Понятно спасибо .

Просто я нашел скрипт (показан с низу) . Есть ли смысл его ставить если у меня сайт состоит на 80 % из флеш ? И не повлечёт ли это другие проблемы ?

Запись запрещающей строки в .htaccess осуществляется автоматически.

Скрипт вставляется в каждую страницу сайта с помощью include.
Описание настроек скрипта:
// error_reporting(0) После установки и настройки скрипта комментарий снять.
$limit // Максимально допустимое количество обращений к сайту с одного IP-адреса в минуту.
$htaccess // Путь к файлу .htaccess
$htstring // Комментарий к строке в файле .htaccess
$dirfiles // Путь к папке с временными файлами
$logfiles // Имена временных файлов
$excludes // Массив исключений с именами хостов, которым "можно всё"

<?php
//error_reporting(0);
$address $_SERVER['REMOTE_ADDR'];
$ref $_SERVER['HTTP_REFERER'];
$url urldecode($_SERVER['REQUEST_URI']);
$limit 20;
$timenow time();
$browser $_SERVER['HTTP_USER_AGENT'];
$htaccess $_SERVER['DOCUMENT_ROOT']."/.htaccess";
$dirfiles $_SERVER['DOCUMENT_ROOT']."/antirip/logfiles/";
$logfiles "$dirfiles".$address;
$hostname gethostbyaddr($address);
$datetime date("Y-m-d H:i:s");
$ip1 getenv("HTTP_X_FORWARDED_FOR");
$ip2 getenv("REMOTE_ADDR");
$hostip1 gethostbyaddr($ip1);
$hostip2 gethostbyaddr($ip2);
if (
$ip1 != $ip2) {
$htstring NULL;
if (!empty(
$ip1)) {
preg_match_all('/[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}/'$ip1$ip1);
$ip1 array_unique($ip1[0]);
foreach (
$ip1 as $v) {
$htstring.="Deny from ".$v." \\\\ Заблокирован Внутренний IP \\\\ $hostip1\r\n";
}
}
if (!empty(
$ip2)) {
$htstring.="Deny from ".$ip2." \\\\ Заблокирован IP Proxy \\\\ $hostip2\r\n";
}
} else {
$htstring "Deny from ".$address." \\\\ Заблокирован Внешний IP \\\\ $hostname\r\n";
}
$excludes = array(
"yandex.ru",
"rambler.ru",
"googlebot.com",
"webaltabot.com",
"inktomisearch.com",
"search.live.com",
"deb.telenet.ru",
"213.248.56.160",
"81.19.77.184"
);

if (
$opendir opendir($dirfiles)) {
while (
false !== ($log readdir($opendir))) {
if (
$log != "." and $log != "..") {
$timelog date(filemtime("$dirfiles"."$log"));
if (
$timelog < ($timenow 60)) {
unlink("$dirfiles"."$log");
}
}
}
}

foreach (
$excludes as $v) {
if (
ereg($v$hostname)) {exit;}
}

if (!
file_exists($logfiles)) {fopen($logfiles"w+");}
$write "$datetime - $hostname<br>Browser: $browser<br>Referer: $ref<br>URL: $url<br>\r\n";
if (
$logfiles) {
if (
is_writable($logfiles)) {
if (!
$handle fopen($logfiles'a')) {exit;}
if (
fwrite($handle$write) === FALSE) {exit;}
fclose($handle);

}

if ((
count(file($logfiles)) > $limit) and ($timelog > ($timenow 60))) {
if (
$htaccess) {
foreach (
file($htaccess) as $h) {
if (
$h === $htstring) {
exit;
}
}
if (
is_writable($htaccess)) {
if (!
$handle fopen($htaccess'a')) {exit;}
if (
fwrite($handle$htstring) === FALSE) {exit;}
fclose($handle);

}
}
?> 

если на сайте стоит сапа, надо разрешить доступ роботам, список прилагается
217.107.36.73
217.107.36.132
81.177.144.46
87.242.74.101
80.251.136.38
93.191.15.77

  Ответить  
 
 автор: Василь   (09.12.2013 в 03:38)
 
   для: prtygi   (25.05.2011 в 15:24)
 

Никому не советую пользоваться этим кодом, он косячный вдоль и поперёк. rnМассив ботов, вообще не работает (читается только последний в массиве), да ещё и стоитrn
foreach ($excludes as $v) {rnif (ereg($v, $hostname)) {exit;}rn} 
rnС такой фигнёй, вы побаните бота, а не разрешите доступ.rn
$timenow - 60 
rnЭто под какой сайт такой таймаут??rnrnА это условие вообще жестьrn
 if ((count(file($logfiles)) > $limit) and ($timelog > ($timenow - 60))) {   
rnНу вот так же правильно:rn
if ((count(file($logfiles)) > $limit)) {
rnrnИдея кода хорошая, но реализация никакая,rnи даже опаснаяrnтут половину переписывать нужно

  Ответить  
 
 автор: Василь   (09.12.2013 в 03:57)
 
   для: Василь   (09.12.2013 в 03:38)
 

Короче напишу вместо него нормальный код, и выложу тут.
А то люди этот код по всей сети на разных сайтах находят и ставят себе в движки,
даже не потестировав и не врубившись как он классно "сайт защищает".

Ещё пару вредных слов:
Что это за способ определения Ip-шника такой, да ещё и попытка эту косячную муру
в хтассес записывать? Типа он там определит прокси... ага, щас.
Почему не сохраняется лог-файл заблокированного IP?
Условия по таймауту расписаны так, что он у вас поблокирует 1/3 нормальных юзеров.
Почему я не вижу время блокировки лога?

Самый прикол, повторюсь, массив ботов в этом коде.
Интересно, тот писатель, которые его придумал, вообще его хоть раз проверил?
Если в этом массиве (который вообще не пашет, кроме замыкающего значения)
последним поставить бота Яндекса и на неделю забухать - ваш сайт повылетает из Яши нафиг.
Ибо стоит exit.

Думаю за пару вечеров напишу-перепишу свой и выложу тут к концу недели.

  Ответить  
 
 автор: Василь   (19.12.2013 в 07:26)
 
   для: Василь   (09.12.2013 в 03:57)
 

Антинагрузка версия 1.3

Установка
1. Проверяем наличие .htaccess
2. Создаём папку: logfiles, а в ней папку badblocking
3. Помещаем код в один файл, который подгружается
ко всем страницам сайта.(например шапка сайта)
4. Настраиваем самое важное значение в коде - $limit

Это значение очень индивидуально. У навароченного интернет магазина
лучшим например окжется 100, а у сайта в пять страниц - 30.
Но аккуратно подобрав один раз это число, можно больше не париться.

5. Данный пример заточен под чисто русский сайт.
Если сайт под заграницу - правим массивы хороших ботов.
6. Устанавливаем адрес своей почты.

Особенности скрипта:

Банит только адских демонов, валящих и качающих сайты.
Гарантированно не трогает хороших ботов и посетителей

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

На почту админа приходит письмо с краткой инфой о забаненном демоне.

Примечания:
Писал для себя. Код лично у меня работает чётко без глюков и не забанил
ни одного нормального посетиля.
По опыту, рекомендую периодически подтирать все баны из .htaccess
не реже 1 раза в три месяца.

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

Массив $browexclud - кому-то покажется смешным, т к заточен на точное совпадение.
Его можно например заменить на частичное совпадение или удалить из кода.
Кто знает хоть немного php - работы на 5 мин, по аналогии с массивом $hostexclud

Удачи!

  Ответить  
 
 автор: Василь   (19.12.2013 в 07:33)
5.2 Кб
 
   для: Василь   (19.12.2013 в 07:26)
 

Код прикрепил к сообщению

  Ответить  
 
 автор: Василь   (23.12.2013 в 01:03)
6.1 Кб
 
   для: Василь   (19.12.2013 в 07:33)
 

Новая версия 1.5

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

1. Создаём любую страницу сайта, на которую нет ссылок на сайте.
Не пустую, а с каким-нибудь текстом по теме сайта.
2. Вставляем её url в код
Качальщик её хватает
и тут же попадает в бан. Он ведь не способен, в отличие от
посетителя, понять что это ловушка, а не обычная страница.
3. В письме админу, теперь приходит инфа за что забанили.

Новая версия прикреплена к сообщению
Установка и настройка не изменились,
кроме добавления урла страницы

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

Удачи!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования