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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Защита от автопостинга.

Сообщения:  [1-10]    [11-20]   [21-30]   [31-40]   [41-50]   [51-60]  ...    [61-62] 

 
 автор: cheops   (27.11.2006 в 13:56)   письмо автору
 
   для: mrklon   (21.11.2006 в 20:51)
 

Дальнейшее обсуждение в теме http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=28398.

   
 
 автор: Гончий пёс   (27.11.2006 в 00:52)   письмо автору
 
   для: mrklon   (26.11.2006 в 16:36)
 

Так-с... как вариант, можно было бы порекомендовать вставить в index.php проверку на наличие файла add.ip, если не существует, то создать, и записать в него 0.0.0.1|0000000001, ибо list($ip_ip,$ip_time)=explode("|",$ip_fgets) (23 строчка в index.php и почти такая же в 38 строчке msg.php) посылает в баню. Однако имеются противопоказания к использованию данного метода.

<?php
###Вот так делать не надо!
if (!file_exists("add.ip"))//проверка на существование
{
$ip_open fopen("add.ip","w");
//далее пишем  в файл какие-то тестовые значения...
}
else
{
$ip_open fopen("add.ip","r");

}
?>

Данный вариант НЕ РЕКОМЕНДУЕТСЯ!!! Почему? Сначала мы проверим файл на существование, узнаем, что его нет и создадим новый пустой или очистим существующий (в соответствии со спецификацией режима). А вот тут-то как раз и возникает коллизия. Есть ненулевая вероятность, что другой процесс вклинится и что-то запишет в файл, а мы это вжик и очистим...

В связи с чем, предлагается, предварить вышеуказанные функции оператором "@", а вместо режима "r" в спорных случаях использовать режим "a+". Вот такие вот поправочки приходят на ум, если бегло просмотреть скрипт.

Ну я так понимаю, в скрипте реализована только система защиты от автопостинга?

   
 
 автор: XPraptor   (27.11.2006 в 00:37)   письмо автору
 
   для: deman-b   (27.11.2006 в 00:34)
 

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

   
 
 автор: deman-b   (27.11.2006 в 00:34)   письмо автору
 
   для: XPraptor   (27.11.2006 в 00:22)
 

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

   
 
 автор: XPraptor   (27.11.2006 в 00:22)   письмо автору
 
   для: mrklon   (26.11.2006 в 16:36)
 

Ты прикололся браток :)
Тут тебе с начала ветки толкуют ,что бот приходит с разных IP по проксям, не использует сессию если она не нужна. Иди учи матчасть.

Мой бот умеет обходить любую защиту сессионную, кукную, подтверждение по e-mail, картинки (настроенные на распознование).
Единственное что он не может, это распознать специально деформированные картинки. Алгоритмы деформации изображения и алгоритмы распознования деформированных изображений постоянно соперничают. Но соответственно, деформаторы всегда на время опережают распозновальшиков, поэтому некоторые картинки временно не могут быть обработаны существующими алгоритмами.

Все остальное - бот имеет как хочет и ни что вас не защитит.

   
 
 автор: Loki   (26.11.2006 в 22:30)   письмо автору
 
   для: deman-b   (26.11.2006 в 18:47)
 

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

   
 
 автор: deman-b   (26.11.2006 в 18:47)   письмо автору
 
   для: Loki   (26.11.2006 в 16:12)
 

я это и имел ввиду!
Идентификатор который хранится у пользователя - session_id();
Сама кука с её переменными хранится на сервере - $_SESSION['cookie'] = "value";

   
 
 автор: mrklon   (26.11.2006 в 16:36)   письмо автору
 
   для: deman-b   (26.11.2006 в 15:55)
 

Вот что я написал за ночь. Не бейти сильно, я только учусь, могу сделать элементарные асипки.

rab.php - форма ввода


<?php

session_start
();

##########################################
$ip_block=60;//время запрета
$ip $_SERVER['REMOTE_ADDR'];//ip пользователя
$s_time time();// серверное время
$ip_zapret 0;//запрет на запись
##########################################

################################################################################
### Проверка на давность ип по времени #########################################
################################################################################

$ip_open fopen("add.ip","r");
flock($ip_open,1);//защита чтения


    
while(!feof($ip_open/*and filesize($ip_open)*/)
    {
    
$ip_fgets fgets($ip_open);
    list(
$ip_ip,$ip_time)=explode("|",$ip_fgets);

        if(
$ip_ip==$ip and $s_time<($ip_time+$ip_block) )
        {
        
$ip_zapret 1;
        echo 
"<hr>ПОДОЖДИТЕ некоторое время!<hr>";
        break;
        
//Запрещаем писать
        
}
        else
        {
        
$ip_zapret 0;
        
//Разрешаем писать
        
}

    }


flock($ip_open,3);//снимаем защиту
fclose($ip_open);




################################################################################
### Пишем защиту от двойного клика #############################################
################################################################################


if($ip_zapret==0)
    {
    
$_SESSION['flag'] = "on";

################################################################################
### Пишем формы ################################################################
################################################################################

    
echo"<form method=\"get\" action=\"msg.php\">";

    echo
"Имя:<br> <input type=\"text\" name=\"nik\"><br>";
    echo
"Майл:<br> <input type=\"text\" name=\"mail\"><br>";
    echo
"ВЕБ: <br><input type=\"text\" name=\"web\"><br>";
    echo
"ТЕКСТ: <br><textarea name=\"msg\" COLS=64 ROWS=6><br>";

    echo
"<input type=\"submit\"><br><br></form>";
    }

?>


msg.php -обработчик форм


<?php
session_start
();

##########################################
$ip_block=60;//время запрета
$ip $_SERVER['REMOTE_ADDR'];//ip пользователя
$s_time time();// серверное время
##########################################


if(isset($_SESSION['flag']))
    {
    unset (
$_SESSION['flag']);
    
OBNOVLENIE_ADDIP($ip_block,$s_time,$ip);
    
#####################################
    ## Обрабатываем формы и пишем инфу #
    ###################################
    
echo "<hr>VSE OK<HR>";
    }
    else
    {
    echo 
"Нехорошо использовать двойной клик!";
    }





function 
OBNOVLENIE_ADDIP($ip_block,$s_time,$ip)
//Вычищаем из add.ip устаревшие записи
{
$prov_open=fopen("add.ip","r");
flock($prov_open,1);

    for(
$i=0; !feof($prov_open) ;$i++)
    {
    
$prov_fgets=fgets($prov_open);
    list(
$ip_ip[$i],$ip_time[$i])=explode("|",$prov_fgets);

        if( 
$s_time > ($ip_time[$i]+$ip_block) )//вынрызаем старые записи
        
{
           unset(
$ip_ip[$i],$ip_time[$i]);//удаляем старье
          
$i--;
        }
    }


flock($prov_open,3);
fclose($prov_open);

######## запись чистых ip ##############

$prov_open=fopen("add.ip","w");
flock($prov_open,2);

    for(
$y=0;    $i>$y    ;$y++)
    {
    
fputs($prov_open,$ip_ip[$y]."|".$ip_time[$y]);
    }
    
fputs($prov_open,$ip."|".$s_time);//запись ip пользователя

flock($prov_open,3);
fclose($prov_open);
}

?>


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

Как вам такая защита?

На подходе скрипт защиты картинками (без GDlib). Только незнаю как убивать временные файлы, если юзвер будет баловаться рефрешами. Тож наверное через сессии...

   
 
 автор: Loki   (26.11.2006 в 16:12)   письмо автору
 
   для: deman-b   (26.11.2006 в 15:55)
 

сессионная кука хранится у клиента, а на сервере - сессионные переменные.

   
 
 автор: deman-b   (26.11.2006 в 15:55)   письмо автору
 
   для: Loki   (26.11.2006 в 15:23)
 

это в каком смысле?..
у меня и так все полки забиты всякими книгами, справочниками...
на столе только шт.5 -10 ...
или вы про грамотические ошибки?)....

   

Сообщения:  [1-10]    [11-20]   [21-30]   [31-40]   [41-50]   [51-60]  ...    [61-62] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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