У меня есть форма, которая отправляет информацию в таблицу базы данных. Мне сверились с ним JavaScript, но что лучший способ состоит в том, чтобы остановить спаммеров, входящих http и такой в базу данных с PHP, когда JavaScript выключен?
Вы можете реализовать CAPTCHA на форме:
http://en.wikipedia.org/wiki/CAPTCHA
Edit: Также определенно проверьте данные формы на стороне сервера и проверьте наличие html-тегов и т.д., как обычно, но CAPTCHA должна помочь против автоматизированных атак спама.
Следует учитывать две вещи, которые следует реализовать параллельно (возможно, есть еще кое-что).
Что ж, для CAPTCHA вам все равно придется выполнять проверку на стороне сервера. Но даже если вы решили не использовать капчу, вам следует провести проверку данных на стороне сервера.
Никогда не доверяйте клиенту. Всегда проверяйте все данные на стороне сервера. JavaScript для проверки формы может быть просто дополнительной функцией. Вы можете начать с основных функций PHP, чтобы проверить, содержит ли контент определенные строки, которые вам не нравятся, например. «http: //».
if (strpos('http://', $_POST['message']) !== false) { /* refuse */ }
Вы можете использовать CSRF-защиту для предотвращения спамеров, я считаю это весьма эффективным.
Что это такое и как это работает
Другой хитрый метод - включить поле «приманки» - скрытое поле, которое никогда не должно передаваться вместе с содержимым. Если он заполнен, значит, это спам. Ни один из этих методов не требует назойливой CAPTCHA.
Я предлагаю использовать функцию htmlentities()
перед вставкой.
Очевидно, что вставка должна быть выполнена с использованием параметризованных запросов для взаимодействия с базой данных. captcha - это, конечно, вариант, но он больше служит для ограничения того, как часто кто-то может писать, а не что он может писать. Используйте экранирование hmtl (опять же, функция htmlentities()
), чтобы предотвратить ввод пользователем того, что вам не нужно.