Как остановить спаммеров, входящих http в форму к базе данных

У меня есть форма, которая отправляет информацию в таблицу базы данных. Мне сверились с ним JavaScript, но что лучший способ состоит в том, чтобы остановить спаммеров, входящих http и такой в базу данных с PHP, когда JavaScript выключен?

7
задан BalusC 18 March 2010 в 13:27
поделиться

5 ответов

Вы можете реализовать CAPTCHA на форме:

http://en.wikipedia.org/wiki/CAPTCHA

Edit: Также определенно проверьте данные формы на стороне сервера и проверьте наличие html-тегов и т.д., как обычно, но CAPTCHA должна помочь против автоматизированных атак спама.

6
ответ дан 6 December 2019 в 15:20
поделиться

Следует учитывать две вещи, которые следует реализовать параллельно (возможно, есть еще кое-что).

  1. Captcha (как упоминалось ранее)
  2. Проверьте свои данные на стороне сервера! Вы писали, что делаете это с помощью javascript. Это хорошо, но тот же процесс проверки должен быть написан на PHP.

Что ж, для CAPTCHA вам все равно придется выполнять проверку на стороне сервера. Но даже если вы решили не использовать капчу, вам следует провести проверку данных на стороне сервера.

2
ответ дан 6 December 2019 в 15:20
поделиться

Никогда не доверяйте клиенту. Всегда проверяйте все данные на стороне сервера. JavaScript для проверки формы может быть просто дополнительной функцией. Вы можете начать с основных функций PHP, чтобы проверить, содержит ли контент определенные строки, которые вам не нравятся, например. «http: //».

if (strpos('http://', $_POST['message']) !== false) { /* refuse */ }
3
ответ дан 6 December 2019 в 15:20
поделиться

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

Что это такое и как это работает

Другой хитрый метод - включить поле «приманки» - скрытое поле, которое никогда не должно передаваться вместе с содержимым. Если он заполнен, значит, это спам. Ни один из этих методов не требует назойливой CAPTCHA.

3
ответ дан 6 December 2019 в 15:20
поделиться

Я предлагаю использовать функцию htmlentities() перед вставкой.

Очевидно, что вставка должна быть выполнена с использованием параметризованных запросов для взаимодействия с базой данных. captcha - это, конечно, вариант, но он больше служит для ограничения того, как часто кто-то может писать, а не что он может писать. Используйте экранирование hmtl (опять же, функция htmlentities()), чтобы предотвратить ввод пользователем того, что вам не нужно.

0
ответ дан 6 December 2019 в 15:20
поделиться
Другие вопросы по тегам:

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