.NET Recaptcha https - PullRequest
       8

.NET Recaptcha https

6 голосов
/ 14 апреля 2010

Мы начали использовать элемент управления recaptcha в ASP.NET, и он работает нормально. но одно из требований, которое у нас есть, заключается в том, что весь исходящий трафик проходит через Https.

Я знаю, что recaptcha поддерживает https, но не ясно, как настроить (или даже если это настраивается) при использовании опции плагина ASP.NET.

кто-нибудь имеет опыт?

Я немного подробнее расскажу о том, что нашел до сих пор ...

Пакет Recaptcha содержит 3 открытых класса

RecaptchaControl, RecaptchaValidator а также RecaptchaResponse

RecaptchaControl - это элемент управления Asp.NET, специфичные для рекапчи методы, похоже, касаются тем / внешнего вида.

Экземпляр Validator имеет поле RemoteIP (которое, я полагаю, будет представлять сервер проверки), но я не могу связать его с элементом управления.

RecaptchaResponse, кажется, более или менее представляет перечисление с возможными ответами (действительный / недействительный / не удалось подключиться).

похоже, что элемент управления Recaptcha разумно выбирает https , если запрос был https. Я предполагаю, что он делает то же самое для проверки, но это не ясно из исходного кода http://code.google.com/p/recaptcha/source/browse/trunk/recaptcha-plugins/dotnet/library/

private const string VerifyUrl = "http://www.google.com/recaptcha/api/verify";
private const string RECAPTCHA_SECURE_HOST = "https://api-secure.recaptcha.net";        
private const string RECAPTCHA_HOST = "http://api.recaptcha.net";
--------------------------------SNIP------------------------------------
/// <summary>
        /// This function generates challenge URL.
        /// </summary>
        private string GenerateChallengeUrl(bool noScript)
        {
            StringBuilder urlBuilder = new StringBuilder();
            urlBuilder.Append(Context.Request.IsSecureConnection || this.overrideSecureMode ? RECAPTCHA_SECURE_HOST : RECAPTCHA_HOST);
            urlBuilder.Append(noScript ? "/noscript?" : "/challenge?");
            urlBuilder.AppendFormat("k={0}", this.PublicKey);
            if (this.recaptchaResponse != null && this.recaptchaResponse.ErrorCode != string.Empty)
            {
                urlBuilder.AppendFormat("&error={0}", this.recaptchaResponse.ErrorCode);
            }

            return urlBuilder.ToString();
        }

Ответы [ 3 ]

12 голосов
/ 14 апреля 2010

Если вы проверите http://recaptcha.net/apidocs/captcha/client.html, это говорит:

"Во избежание получения браузера предупреждения, если вы используете reCAPTCHA на SSL сайт, вы должны заменить http://api.recaptcha.net с https://api -secure.recaptcha.net . "

Итак, recaptcha поддерживает HTTPS-представления. Есть ли у элемента управления ASP.NET какие-либо свойства, которые можно настроить для исходящего URL-адреса? В худшем случае вам может понадобиться Reflector , чтобы изучить код и посмотреть, как он построен.

5 голосов
/ 25 мая 2010

Библиотека .NET не требует какой-либо конфигурации для работы в среде HTTPS. Из текущего HttpContext будет определено, сделан ли запрос по протоколу HTTPS.

Но есть свойство RecaptchaControl.OverrideSecureMode, которое вы можете использовать на тот случай, если оно не будет работать должным образом. Установите True для включения режима HTTPS.

Обновление

Кажется, я неправильно понял вопрос. Боюсь, что нет конечной точки HTTPS для проверки reCAPTCHA (между вашим сервером и их).

0 голосов
/ 24 июня 2014

Мы используем плагин reCAPTCHA для .NET, и нам нужно было сделать две вещи, чтобы заставить его работать поверх SSL в нашей среде. Наша среда разработки не использует SSL, а наши тестовые и производственные среды используют.

  1. Установите для свойства RecaptchaControl.OverrideSecureMode значение true, как упоминал Адриан Годонг в своем первоначальном ответе на этот вопрос. Это позволило элементу управления работать локально и в dev, не используя SSL, и в test и prod, используя SSL.

    <recaptcha:RecaptchaControl
        OverrideSecureMode="True"
        ID="recaptcha"
        runat="server"
        Theme="blackglass"
        />
    
  2. Когда мы генерировали открытый и закрытый ключи, мы указали global keys. Это позволило нам использовать recaptcha во всех наших различных средах (локально, dev.mydomain.com, test.mydomain.com и mydomain.com) и исправило ошибку «input error: invalid referrer».

...