Мы используем управление Капчой в форме регистрации, что мы делаем полную клиентскую проверку для всех полей в JavaScript (JQuery) около проверки сервера..
Я попробовал много путей, но все запишут значение Капчи в JavaScript, к которому может получить доступ любой :(
Я ищу, если там какой-либо путь, которые позволяют мне, проверяют значение Капчи в стороне клиента с помощью JQuery безопасным способом, или это не может быть сделано?
Это невозможно.
Как вы знаете, Javascript является клиентским, и любой клиентский код следует рассматривать как потенциально скомпрометированный, поскольку вы не можете его контролировать.
В лучшем случае вы можете прибегнуть к отправке соленого хэша значения вместе с солью, но даже это само по себе может быть использовано для проверки значений предположения перед фактической отправкой.
Все остальное зависит от обращений к серверу.
В соответствии с запросом комментария, вот общая идея:
Во-первых, на сервере вычислите случайную строку, которая будет использоваться в качестве соли. Это должно быть примерно уникальным для каждого запроса. Эта строка предназначена для предотвращения атак радужных таблиц .
Теперь, сохраняя эту строку отдельно, но также создайте другую строку, которая представляет собой конкатенацию случайной строки и ответа Captcha. Из этой новой объединенной строки вы генерируете ее хэш (например, SHA-1).
using System.Web.Security;
...
string hashVal = FormsAuthentication.HashPasswordForStoringInConfigFile(combined, "SHA1");
И случайная строка, и хеш-значение должны быть размещены на странице, чтобы javascript мог их прочитать.
На стороне клиента, когда пользователь отвечает на Captcha, возьмите случайную строку и объедините ее с ответом (идея здесь?). Взяв эту строку, вы можете использовать что-то вроде плагина JQuery SHA-1 для ее хеширования и сравнения с предварительно вычисленным хешем, который вы отправили.
hashVal = $ .sha1 (CombinedString)
Если совпадает, это (почти) наверняка правильный ответ. Если нет, то это 100% неправильный ответ.
Мое решение )) Каждый раз, когда страница показывает капчу пользователю, вы можете динамически генерировать обфусцированные JavaScript функции(я думаю лучше всего 5 или 10). Например, одна функция (или 3)) может установить cookies с заранее сгенерированным хэшем (сервер возвращает его) (от реального значения капчи), другие функции должны реализовать алгоритм на стороне сервера для проверки значения, которое ввел пользователь. Я могу сказать, что это работает на 100%, потому что очень сложно парсить динамически javascript + мы устанавливаем cookies пользователя на стороне клиента (Ботам очень сложно узнать, где и как вы устанавливаете и проверяете cookies), используя JavaScript.
вы можете использовать ajax для отправки текущего значения на сервер, который ответит истина или ложь.это помешало бы вам сделать настоящий пост, а также не дать значение catpcha в html.