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

Форум PHP

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

 

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

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

тема: Защита от спама
 
 автор: koder_lis   (26.09.2008 в 17:24)   письмо автору
 
 

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

Captcha не ставлю потому что снижает usability, да и не помогает она защитить сайт от спамеров-человеков

Защита с помощью Javascript не устраивает потому что многие потенциальные юзеры заходят с отключенным Javascript

может есть какой нибудь скрипт чтобы отсеивать по IP и насколько это оправдано, не пострадают ли обычные пользователи, которые могут тоже выходить с того же IP что и спамер?

сообщения постоянно модерируются, но все равно не удобно когда сотни сообщений за день

заранее спасибо...

  Ответить  
 
 автор: mihdan   (26.09.2008 в 17:29)   письмо автору
 
   для: koder_lis   (26.09.2008 в 17:24)
 

Обратитесь к моему товарищу.

Так ли нужен CAPTCHA

  Ответить  
 
 автор: koder_lis   (26.09.2008 в 17:43)   письмо автору
 
   для: mihdan   (26.09.2008 в 17:29)
 

Спасибо, хорошая статья, но к сожалению про блокировку по IP тема плохо раскрыта

  Ответить  
 
 автор: JESS   (29.12.2009 в 22:51)   письмо автору
 
   для: mihdan   (26.09.2008 в 17:29)
 

реальный сайт, прочитал про спам, тема про измениения имяни заинтересовала, сделал так для своего сайта:
<?php
    
$thisday 
date("Y-m-d");
/*зашифрованное имя с датой*/
<input type="text" name="<?=md5(md5($thisday))."".md5(md5('vazhemylo'));?>">

/*при посте разщифровываеться*/
$postMail md5(md5($thisday))."".md5(md5('vazhemylo'));
$mail$_POST[$postMail];

?>

форма выглядит вот так в HTML
<input type="text" name="330cd7a1fe930c18a696627b181973d79f0 c45d50a47f827e21232d1ecae03a9">

что скажете, поможет?

  Ответить  
 
 автор: cheops   (29.12.2009 в 23:05)   письмо автору
 
   для: JESS   (29.12.2009 в 22:51)
 

Хм... а цель такого поля какова?

  Ответить  
 
 автор: JESS   (29.12.2009 в 23:09)   письмо автору
 
   для: cheops   (29.12.2009 в 23:05)
 

Как я прочитал на http://vexer.ru/lits/?id=025 , что спам машины сканируют сайт на формы с именани name, mail, e-mail, msg, massage, и тем самым спамят. В тексте написано что если изменить имя форм, то спам машинам будет труднее.

  Ответить  
 
 автор: cheops   (29.12.2009 в 23:13)   письмо автору
 
   для: JESS   (29.12.2009 в 23:09)
 

Хм, любопытно... а если пользователь будет некоторое время набирать данные и время изменится - как обработчик узнает, час назад форма была открыта или секунду назад? В любом случае нужно бы как-то в сессию помещать названия элементов управления...

  Ответить  
 
 автор: JESS   (29.12.2009 в 23:17)   письмо автору
 
   для: cheops   (29.12.2009 в 23:13)
 

Предположим что будет md5($thisDate)."".md5('vazhemylo') висеть в сессии, то в принципе работать будет, и поможет?

  Ответить  
 
 автор: Fractured#   (29.12.2009 в 23:31)   письмо автору
 
   для: JESS   (29.12.2009 в 23:17)
 

А что мешает боту "подхватить" сессию? o_O Чем он от обычного пользователя отличается?

  Ответить  
 
 автор: toproot   (29.12.2009 в 23:37)   письмо автору
 
   для: JESS   (29.12.2009 в 23:09)
 

Думаю не по name и massage а на соответстви регулярному выражению (эсли это нормальный робот) поэтому должен будет походу найти все допустимые w3c варианты ХТМЛ форм.
я чото так и не понял как вы будуте это разшифровывать ?
я когдато думал
$time = $UNIX_TIME_STAMP-3600;
for($i=0;$i<3600;$i++)
{
$time = md5($start);
if($time == $_POST['timeform']) { ...
$time++
}

  Ответить  
 
 автор: JESS   (30.12.2009 в 00:10)   письмо автору
 
   для: toproot   (29.12.2009 в 23:37)
 

Думаю так>

<?php 
  $_SESSION
['name'] = md5(date("i")."vazheimja");

if(empty(
$_POST)) {
<
input type="text" name="<?=$_SESSION['name'];?>" value="Nom">
} else {

$name htmlspecialchars($_POST[$_SESSION['name']]);
echo 
$name;

     unset (
$_SESSION['name']);
}
?>

  Ответить  
 
 автор: toproot   (30.12.2009 в 00:27)   письмо автору
 
   для: JESS   (30.12.2009 в 00:10)
 

if(empty($_POST)) { 
<input type="text" name="<?=$_SESSION['name'];?>" value="Nom"> 

не забудьте echo перед формой. или ПХП код закрыть/открыть.
$_POST[$_SESSION['name']]

- это врятли будет работать
STOP, что значит empty($_POST) ? Многие браузеры просто от себя передают пост значения x=138, y=166 и прочее.
и вообще не совсем понятен смысл. Обычная защита формы при помощи сесии ?

  Ответить  
 
 автор: JESS   (30.12.2009 в 00:32)   письмо автору
 
   для: toproot   (30.12.2009 в 00:27)
 

-код закрыть&октрыть, забыл, я это для примера написал.
- не понимаю в чем проблема if(empty($_POST))?? и что х=138, y=?? значит?

  Ответить  
 
 автор: toproot   (30.12.2009 в 00:35)   письмо автору
 
   для: JESS   (30.12.2009 в 00:32)
 

$_POST ты проверяеш весь суперглобальный масив.

Не заню зачем, можеш проверить, браузеры передают на страницу пост данные просто так
обычно это x & y.
Google Chrome не передает, а остальные которые я знаю передаютб, и вообще зачем весь массив проверять ?
echo "<PRE>";
 print_r($_POST);
echo "</PRE>";

  Ответить  
 
 автор: JESS   (30.12.2009 в 01:13)   письмо автору
 
   для: toproot   (30.12.2009 в 00:35)
 

тогда лучше if($_POST) { или есть более оптимальный вариант?

  Ответить  
 
 автор: toproot   (30.12.2009 в 01:16)   письмо автору
 
   для: JESS   (30.12.2009 в 01:13)
 

if(empty($_POST['Num'])) { }
где Num - имя поля.

  Ответить  
 
 автор: JESS   (30.12.2009 в 01:18)   письмо автору
 
   для: toproot   (30.12.2009 в 01:16)
 

а если у меня 3 или четыре поля?

  Ответить  
 
 автор: Loki   (30.12.2009 в 00:28)   письмо автору
 
   для: JESS   (29.12.2009 в 22:51)
 

>что скажете, поможет?
Пройденный этап. Боты научились это обходить уже пару лет как (наверняка раньше, но я столкнулся именно тогда)

  Ответить  
 
 автор: Рома   (30.12.2009 в 18:16)   письмо автору
 
   для: mihdan   (26.09.2008 в 17:29)
 

И это еще не все спобы.

  Ответить  
 
 автор: JESS   (30.12.2009 в 23:45)   письмо автору
 
   для: Рома   (30.12.2009 в 18:16)
 

а какие еще есть?

  Ответить  
 
 автор: Николай2357   (31.12.2009 в 10:23)   письмо автору
 
   для: JESS   (30.12.2009 в 23:45)
 

Вот хорошее.

  Ответить  
 
 автор: JESS   (31.12.2009 в 19:35)   письмо автору
 
   для: Николай2357   (31.12.2009 в 10:23)
 

хаха, с наступающим! =P

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

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