|
|
|
| Привет! Читаю статью - http://www.softtime.ru/article/index.php?id_article=35
нашел метод защиты от флуда таким способом
<?php
// $site_addres можете поменять на свое
// но лучше определить его в "общем" файле
if ($_SERVER['HTTP_REFERER'] =! $site_address) die;
?>
|
далее написано что HTTP_REFERER можно подделать, я много раз это слышал, но для собственного понимания хотел бы у вас спросить, как их подделывают? каким образом работает обход такой простенькой защиты? | |
|
|
|
|
|
|
|
для: tima2010
(13.01.2012 в 15:32)
| | Например так:
<?php
$ch = curl_init("http://server.ru/");
curl_setopt($ch,CURLOPT_REFERER,"http://sajt_otkuda_my_pereshli/stranica/otkuda/my/pereshli.html");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$page = curl_exec($ch);
curl_close($ch);
?>
|
| |
|
|
|
|
|
|
|
для: Sfinks
(13.01.2012 в 15:58)
| | понятно, при помощи curl
Выходит что лучше использовать сессии? А вариант с сессиями защитит на 99 %
<?php
// файл 1.php
// Инициируем сессию
session_start();
?>
<form action=handler.php method=post>
Имя : <input type=text name=name>
Пароль : <iput type=password name=pass>
<input type=submit name=send value=Отправить>
<input type=hidden name=session_id value=<?php echo session_id();?>>
</form>
<?php
// файл 2.php
// Инициируем сессию
session_start();
// Сравниваем переданный идентификатор из формы с
// текущим идентификатором сессии
if($_POST['session_id'] != session_id())
{
exit("Попытка передачи данных с другого хоста. Скрипт остановлен.");
}
// Дальнейшая обработка данных...
?>
|
| |
|
|
|
|
|
|
|
для: tima2010
(13.01.2012 в 16:28)
| | А что мешает передать $_POST['session_id'] ?
Ничего.
Это тоже не защита.
Вернее защита, но от начинающих парсеров =)
Совсем начинающих. | |
|
|
|
|
|
|
|
для: Sfinks
(13.01.2012 в 17:13)
| | Посоветуйте пожалуйста тогда как защититься от "не начинающих" | |
|
|
|
|
|
|
|
для: tima2010
(13.01.2012 в 18:18)
| | CAPTCHA - посмотрите по ссылочке, ботам пока еще не удалось прогрызть. По крайней мере я не слышал. ну и конечно не глушить начисто страницу, а просто выводить сообщение что форма заполнена некорректно(неверно введены контрольные цифры) | |
|
|
|
|
|
|
|
для: tvv123456
(13.01.2012 в 18:48)
| | Слышал я тут же от cheops'a что есть какие-то баевские сети, что уже и каптчу научились ломать, но мне еще такие умные боты не попадались (тьфу-тьфу-тьфу). Так что для неавторизованного посетителя самое надежное - это каптча. Но самое присамое надежное это авторизация =) | |
|
|
|
|
|
|
|
для: Sfinks
(13.01.2012 в 21:02)
| | Капчу можно только распознать. Сломать ее можно, если только код капчи в каком либо виде передается через пользователя. Распознать символы на картинке задача не простая. Даже стандартные шрифты такие проги как FineReader не всегда верно распознают. Капчу на которую я дал ссылку пока не прогрызли, а если вы с этим не согласны прошу дать ссыль на скрипт который может распознать 80% изображений которые я дам
Насчет авторизации не согласен. Без капчи и она достаточно несложно обходиться
Притча:
Поставил тут один знакомый себе старую версию форума phpbb. Там была и капча(правда простенькая) и авторизация. Но все равно ежедневная куча спама не самого пристойного содержания и от разных авторизованных пользователей. Сразу оговорюсь что была включена опция проверки электронного адреса. Более менее приличному боту авторизация не проблема. Единственная сложность, что под конкретный сайт немного придеться корректировать алгоритм, но зато бот сможет создавать ежедневно тысячи пользователей( и все на разные электронные адреса!!!). Как понимаете банить такую уйму народа тяжело.
Так что капча это самое надежное пока.
Ну можно конечно создавать еще свои правила портала:, допустим пользователь не имеет права создавать новые темы, пока не оставит n-ое количество ответов и т.п. При создании каптчи тоже много нюансов есть, но пока этот способ в моих глазах самый надежный, но с ним можно легко переборщить и отпугнуть пользователей :) | |
|
|
|