Здравствуйте, дамы и господа,
Хочу ко всему сказанному добавить практический совет, который
проистекает из простого рассуждения. Рассуждение такое:
От чего, собственно, мы предполагаем защититься? Я вижу всего две
возможности: 1. От программ-роботов, работающих с базой адресов
сайтов, где можно выкладывать рекламу. 2. От хакеров, пытающихся
целенаправленно взломать какой-то сайт. Думаю, если речь не идёт о
сайте фирмы, а просто о небольшом частном сайте, исходить надо из
первого предположения.
Как совершенно справедливо указывал i_chay и другие отвечающие, для
отфильтровки роботов от людей можно использовать тест Тьюринга в любой
модификации.
А теперь собственно предложение: В форме ввода записи в гостевую книгу
пишем текст типа: дорогой друг, если вы хотите оставить запись в
гостевой книге, первым словом в вашей записи должно быть слово бонжур,
иначе запись будет отвергнута.
В программе проверки новой записи проверяем наличие волшебного слова.
Если слово найдено, то мы его из текста вырезаем, и запись разрешаем.
Если слово не найдено, то мы вежливо предлагаем внимательно читать
замечание.
Разумеется, в качестве "волшебного" можно использовать любое слово,
например, пожалуйста, баобаб, или [*] Важно чтобы слово было
нетипичным для начала рекламы, и не слишком обременительны, не слишком
длинным.
Можно разрешить ставить штамповой слово в любом месте письма, это тоже
легко проверяется. На мой взгляд важно удалять это слова из
пропускаемых сообщений, чтобы не замусоривать текст, но главное, чтобы
не создавать статисичски заметное слово, не мозолить глаза роботам.
Такая защита отрубит роботов до тех пор, пока кто-нибудь из хакеров не
обнаружит её лично. По моим оценкам, для личного сайта это даст 95%
защиту. На самом деле, важно ведь не абсолютная надёность защиты, а
соотношение затрат на её создание и взлом.
--
С наилучшими пожеланиями
Владимир Лукьянов, Москва