Мне нужно ваше мнение по этому коде для внедрения антиспамового решения:
$string = md5($_SERVER['REMOTE_ADDR'])
spam_check
его spam_check
spam_check
извлечь эту $string
из значения db & fill out spam_check
с ним. $string
from db и $_POST['spam_check']
, если они не соответствуют сообщению, это спам … Это хорошая идея? Насколько это безопасно? Очевидным преимуществом является то, что он не требует каких-либо действий от посетителя, например, чтение captcha и т. Д.
Интересно. Я бы с осторожностью подумал об этом как о решении спама / замены кача, но это затрудняет жизнь спамеров.
Однако вам следует планировать рассмотрение случаев, когда javascript отключен (и, возможно, CSS тоже) – например, назначив div для формы, но оставив его с сообщением по умолчанию, а затем записав в него форму с помощью javascript (встроенный, а не ожидающий OnLoad / pageready).
$ string = md5 ($ _ SERVER ['REMOTE_ADDR'])
Это не случайное значение – и оно не изменится. Рассматривать:
$ string = sha1 ($ _ SERVER ['REMOTE_ADDR']. rand (1000) .time ());
(sha1 немного быстрее, чем md5, несмотря на лежащий в основе алгоритм, требующий больше операций).
Было бы неплохо использовать сеанс и:
$ _SERVER ['string'] = sha1 (session_id (). Rand (1000) .time ());
Поскольку эта $string
не очень случайна, и запрос AJAX будет видимым для кого-то, кто пытается обойти вашу защиту, легко создать автоматизацию, которая заранее забирает $string
а затем запускает газиллиум спам-сообщений на эту форму.
Один из подходов, который мне очень нравится, – это использовать CSS, чтобы скрыть элемент <input type="text">
. Бот не знал бы, скрыт он или нет, и обычный пользователь никогда его не увидит.
Взгляните на этот пост, где эта тема уже широко обсуждается. Практические подходы CAPTCHA, основанные на изображениях.
В любом случае, учитывая ваш реальный вопрос is this a good idea?
, Я не могу придумать, почему это не сработает … Я думаю, что часть базы данных не нужна, но есть другие способы, как вы можете видеть по предыдущей ссылке …