Я разрабатываю регистрационную форму для флэш-памяти, и мне нужно включить динамические изображения «капчи» для подтверждения. Может ли кто-нибудь порекомендовать лучшее решение для этого?
внедрение капчи во flash
Ответы (5)
На самом деле это не так уж отличается от капчи в HTML-форме.
Предположим, вы используете php на сервере и у вас есть скрипт captcha.php, который генерирует изображение с картинки и сохраняет его значение в сеансе. В HTML-форме вы должны использовать элемент и установить для его src значение captcha.php. Пользователь заполнит поле текстом, который он видит на изображении. В сценарии, который получает сообщение, вы должны проверить, соответствует ли пользовательский ввод значению сеанса.
Во флеш-форме все точно так же. Вы загружаете изображение, вызывая captcha.php, и просите пользователя ввести дополнительное поле. Затем, когда вы отправляете данные на сервер, вы передаете значение, введенное пользователем в поле капчи, и сервер сопоставляет это со значением, которое он сохранил в сеансе, когда вы вызывали captcha.php.
Так что, в основном, это то же самое, что и в HTML-форме.
Captcha используется для предотвращения отправки ботами HTML-форм, что легко выполняется, поскольку HTML легко понимается и обрабатывается программно. То же самое не верно для приложения Flash. Боту будет сложно отправлять Flash-формы, если он не предназначен специально для вашего сайта.
Поэтому вам не нужно беспокоиться о проблеме со спамом, которую решает капча при работе с Flash-приложением.
Сделать сильную капчу — нетривиальная задача. Должно быть достаточно сложно для ботов потерпеть неудачу, но достаточно легко для людей, чтобы добиться успеха... Я бы взглянул на существующие системы и, возможно, использовал их. reCAPTCHA пользуется популярностью http://recaptcha.net/ . Возможно, его можно использовать через флэш-память, но я не изучал его.
Скорее всего, боты не будут написаны для вашего сайта. Если когда-нибудь возникнет необходимость, простое «добавь эти два числа для меня, k?» было бы достаточно просто.
Честно говоря, я сомневаюсь, что кто-то напишет письмо с признанием, чтобы зарегистрироваться несколько сотен раз на вашем сайте =/
Вы должны больше беспокоиться о том, что кто-то дизассемблирует [или какой-либо термин flash] ваши .swf и просто отправляет сообщения «register» на ваш сервер =/
И да, под этим я пытался подразумевать, что капча должна применяться на стороне сервера, или, на самом деле, ее не так уж сложно обойти.
У нас была острая необходимость внедрить CAPTCHA во флеш-анимацию/форму.
Самый важный момент, на который следует обратить внимание, это то, что ни FF, ни IE (не помню, какой именно) не отправляют файлы cookie обратно с вызовом веб-службы. Поэтому, если вы отправляете форму в веб-службу .Net, вы не можете использовать состояние сеанса http-запроса для сохранения текста капчи, а затем сравнивать введенное пользователем значение капчи при отправке в веб-службу (веб-метод с поддержкой сеанса )
Мы реализовали следующее:
- Установите уникальное значение токена (Guid) на веб-странице.
- передать этот токен как flashvar во флэш-ролик
- загрузите изображение капчи во флэш-память с токеном в качестве параметра URL-адреса. Т.е. captchaImg.aspx?t=xxxxxxx
- во время этого запроса сохраните случайный текст капчи в таблице с токеном
- когда пользователь отправляет свою форму, сравните токен и введенное пользователем значение капчи с тем, что в таблице
Этот подход очень хорошо работает для нас.
Это также безопасно для веб-фермы.