Вопрос по codeigniter, spam – Проблема со спамом в наших контактных формах (Codeigniter)

0

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

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

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

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

Ваш Ответ

3   ответа
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.

}

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

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

Can anyone suggest the best ways to counter SPAM on forms - we've got a captcha in place but spam still seems to be getting in.

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

Is it possible to do the following... On a form check if the POST request has come from the form submitted from that site (and not a form using the same action). If the request has come from the site accept otherwise don't & simply ignore the request.

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

Also - is it possible to do something server-side to stop DDOS style attacks - as the spammer to our site seems to be sending thousands of requests in a very short space of time.

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

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

постскриптум использование вышеуказанного означает, что вы сможете удалить капчу :)

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

Скорее всего, вы бы поместили словарь или несколько слов продукта в вашу капчу. У меня была такая же проблема спама с codeigniter. Затем я положил несколько сильных слов, таких как буквенно-цифровой и все. И это, кажется, работает для меня. Попробуйте.

Похожие вопросы