|
|
|
|
|
|
для: 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+". Вот такие вот поправочки приходят на ум, если бегло просмотреть скрипт.
Ну я так понимаю, в скрипте реализована только система защиты от автопостинга? | |
|
|
|
|
|
|
|
для: deman-b
(27.11.2006 в 00:34)
| | Это точно. Какой тугодум будет добавлять в своего бота никому не нужный сайт, только трафик и время жрать при рассылке. | |
|
|
|
|
|
|
|
для: XPraptor
(27.11.2006 в 00:22)
| | позвольте вмешаться...
ему это всего то надо например для госевухи котоую наврядли ктото будет посещать)
так что и формы прошитой сессией, я думаю будет достаточно) | |
|
|
|
|
|
|
|
для: mrklon
(26.11.2006 в 16:36)
| | Ты прикололся браток :)
Тут тебе с начала ветки толкуют ,что бот приходит с разных IP по проксям, не использует сессию если она не нужна. Иди учи матчасть.
Мой бот умеет обходить любую защиту сессионную, кукную, подтверждение по e-mail, картинки (настроенные на распознование).
Единственное что он не может, это распознать специально деформированные картинки. Алгоритмы деформации изображения и алгоритмы распознования деформированных изображений постоянно соперничают. Но соответственно, деформаторы всегда на время опережают распозновальшиков, поэтому некоторые картинки временно не могут быть обработаны существующими алгоритмами.
Все остальное - бот имеет как хочет и ни что вас не защитит. | |
|
|
|
|
|
|
|
для: deman-b
(26.11.2006 в 18:47)
| | Куки создает броузер. Он при всем желании не сможет ее создать ее на сервере. Так что прислушайтесь к моему совету выше. Наверняка вы понимаете о чем говорите, но в вашей терминологии получается полный бред. | |
|
|
|
|
|
|
|
для: Loki
(26.11.2006 в 16:12)
| | я это и имел ввиду!
Идентификатор который хранится у пользователя - session_id();
Сама кука с её переменными хранится на сервере - $_SESSION['cookie'] = "value"; | |
|
|
|
|
|
|
|
для: 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). Только незнаю как убивать временные файлы, если юзвер будет баловаться рефрешами. Тож наверное через сессии... | |
|
|
|
|
|
|
|
для: deman-b
(26.11.2006 в 15:55)
| | сессионная кука хранится у клиента, а на сервере - сессионные переменные. | |
|
|
|
|
|
|
|
для: Loki
(26.11.2006 в 15:23)
| | это в каком смысле?..
у меня и так все полки забиты всякими книгами, справочниками...
на столе только шт.5 -10 ...
или вы про грамотические ошибки?).... | |
|
|
|
|