2012-06-08 3 views
0

кто может предложить лучшие способы противодействия спама на формах - у нас есть капчет на месте, но спам по-прежнему кажется, что получает вПроблемы со спамом на наших контактных формах (CodeIgniter)

Можно ли. сделайте следующее ... На форме проверьте, пришел ли запрос POST из формы, представленной с этого сайта (а не формы с использованием того же действия). Если запрос пришел с сайта, в противном случае не следует & просто игнорировать запрос.

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

Может ли кто-нибудь предложить другие хорошие методы защиты от нежелательной почты для Codeigniter (v2), которые не слишком сильно мешают пользователю. Заранее спасибо.

ответ

8

Можно ли предложить лучшие способы противодействия спаму на формах - у нас есть капчу на месте, но спам по-прежнему кажется, что получают в

Мне нравится метод «медовый горшок».. В основном поместите скрытое поле в вашу форму с пустым значением. Подтвердите поле как часть представления формы. Если поле! = Пустое - тогда это был бот, так что не получилось. Боты, как правило, просто заполняют все поля формы.

Можно ли сделать следующее ... На форме проверьте, пришел ли запрос POST из формы, представленной с этого сайта (а не с помощью того же действия). Если запрос пришел с сайта, в противном случае не следует & просто игнорировать запрос.

Да - его название CSRF - Codeigniter имеет встроенный встроенный. Включите его в свой файл конфигурации и используйте form_open() в своих формах. Thats it

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

Да - поместите поле «последний подарок» в свою сессию для каждого пользователя. Или IP. Или, тем не менее, вы хотите отслеживать спамера. При каждом представлении формы проверьте последнее время отправки, если оно меньше X секунд (где X - это номер, с которым вам удобно, - говорит 5 секунд), - затем выйдите из формы из-за слишком частого представления.

Другой вариант заключается в том, чтобы записывать, когда форма была «обслуживается» пользователю, а также сбой, если она равна X секундам после запроса (т.е. занимает нормальное лицо 30 секунд для заполнения вашей формы), поэтому 2 секунды означает, что бот).

p.s. используя вышеуказанные средства, вы сможете удалить Captcha :)

+0

Repos опубликовал хороший конкретный пример техники медового банка, о которой я упомянул – Laurence

7

Ну, у меня действительно был большой успех с довольно простым решением.

Создать класс CSS:

.magic /* Call it whatever you want 
{ 
    display: none; 
} 

Вставить что-то подобное в вашей форме:

<form method="post" action=""> 
<p> 
    <label>Name</label> 
    <input type="text" name="name"> 
<p> 
<!-- and the magic --> 
<p class="magic"> 
    <input type="text" name="email"> <!-- spam bots LOVES 'email' fields ;) --> 
</p> 
<!-- /end magic --> 

<p> 
    <label>Real E-mail input field</label> 
    <input type="text" name="some_email"> 
</p> 
</form> 

В контроллере, вы можете сделать что-то вроде этого:

... 
public function create_post() 
{ 
    $this->form_validation... // If you use form validation 
    [...] 
    // If all regular validations are true, do the last bit 

    if($this->input->post('email') == "") //If something is in the 'email' field, it has propbably been filled by a bot, because regular users can't see the field. 
    { 
    $this->your_model->insert_the_post($data); 
    } 
    // otherwise, pretend like nothing. 

} 

Y наши пользователи никогда этого не заметят - и это избавило меня от спама уже несколько лет. Простой, но эффективный.

+0

brill stuff guys! спасибо за советы! – Zabs

+0

Я бы этого не сделал, если у пользователя есть какие-то дрянные «автозаполнения форм», которые есть у некоторых веб-браузеров? Даже если он не отображается, браузер автоматически заполнит его для него. –

0

Возможно, вы бы поместили словарь или некоторые слова продукта в свой captcha. У меня была та же проблема спама с codeigniter. Затем я помещаю сильные слова, такие как альфа-числовые и все. И это работает для меня. Попробуйте.

Смежные вопросы