|
|
|
| есть страница с формой, посещаемость большая, хотелось бы на стороне сервера написать какую-нибудь защиту от спама приходящей с этой формы
Captcha не ставлю потому что снижает usability, да и не помогает она защитить сайт от спамеров-человеков
Защита с помощью Javascript не устраивает потому что многие потенциальные юзеры заходят с отключенным Javascript
может есть какой нибудь скрипт чтобы отсеивать по IP и насколько это оправдано, не пострадают ли обычные пользователи, которые могут тоже выходить с того же IP что и спамер?
сообщения постоянно модерируются, но все равно не удобно когда сотни сообщений за день
заранее спасибо... | |
|
|
|
|
|
|
|
для: koder_lis
(26.09.2008 в 17:24)
| | Обратитесь к моему товарищу.
Так ли нужен CAPTCHA | |
|
|
|
|
|
|
|
для: mihdan
(26.09.2008 в 17:29)
| | Спасибо, хорошая статья, но к сожалению про блокировку по IP тема плохо раскрыта | |
|
|
|
|
|
|
|
для: 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">
что скажете, поможет? | |
|
|
|
|
|
|
|
для: JESS
(29.12.2009 в 22:51)
| | Хм... а цель такого поля какова? | |
|
|
|
|
|
|
|
для: cheops
(29.12.2009 в 23:05)
| | Как я прочитал на http://vexer.ru/lits/?id=025 , что спам машины сканируют сайт на формы с именани name, mail, e-mail, msg, massage, и тем самым спамят. В тексте написано что если изменить имя форм, то спам машинам будет труднее. | |
|
|
|
|
|
|
|
для: JESS
(29.12.2009 в 23:09)
| | Хм, любопытно... а если пользователь будет некоторое время набирать данные и время изменится - как обработчик узнает, час назад форма была открыта или секунду назад? В любом случае нужно бы как-то в сессию помещать названия элементов управления... | |
|
|
|
|
|
|
|
для: cheops
(29.12.2009 в 23:13)
| | Предположим что будет md5($thisDate)."".md5('vazhemylo') висеть в сессии, то в принципе работать будет, и поможет? | |
|
|
|
|
|
|
|
для: JESS
(29.12.2009 в 23:17)
| | А что мешает боту "подхватить" сессию? o_O Чем он от обычного пользователя отличается? | |
|
|
|
|
|
|
|
для: 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++
} | |
|
|
|
|
|
|
|
для: 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']);
}
?>
|
| |
|
|
|
|
|
|
|
для: 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 и прочее.
и вообще не совсем понятен смысл. Обычная защита формы при помощи сесии ? | |
|
|
|
|
|
|
|
для: toproot
(30.12.2009 в 00:27)
| | -код закрыть&октрыть, забыл, я это для примера написал.
- не понимаю в чем проблема if(empty($_POST))?? и что х=138, y=?? значит? | |
|
|
|
|
|
|
|
для: JESS
(30.12.2009 в 00:32)
| | $_POST ты проверяеш весь суперглобальный масив.
Не заню зачем, можеш проверить, браузеры передают на страницу пост данные просто так
обычно это x & y.
Google Chrome не передает, а остальные которые я знаю передаютб, и вообще зачем весь массив проверять ?
echo "<PRE>";
print_r($_POST);
echo "</PRE>";
|
| |
|
|
|
|
|
|
|
для: toproot
(30.12.2009 в 00:35)
| | тогда лучше if($_POST) { или есть более оптимальный вариант? | |
|
|
|
|
|
|
|
для: JESS
(30.12.2009 в 01:13)
| | if(empty($_POST['Num'])) { }
где Num - имя поля. | |
|
|
|
|
|
|
|
для: toproot
(30.12.2009 в 01:16)
| | а если у меня 3 или четыре поля? | |
|
|
|
|
|
|
|
для: JESS
(29.12.2009 в 22:51)
| | >что скажете, поможет?
Пройденный этап. Боты научились это обходить уже пару лет как (наверняка раньше, но я столкнулся именно тогда) | |
|
|
|
|
|
|
|
для: mihdan
(26.09.2008 в 17:29)
| | И это еще не все спобы. | |
|
|
|
|
|
|
|
для: Рома
(30.12.2009 в 18:16)
| | а какие еще есть? | |
|
|
|
|
|
|
|
для: JESS
(30.12.2009 в 23:45)
| | Вот хорошее. | |
|
|
|
|
|
|
|
для: Николай2357
(31.12.2009 в 10:23)
| | хаха, с наступающим! =P | |
|
|
|