security - vencer - elemento captcha sky
¿Cómo funciona esta casilla de verificación recaptcha y cómo puedo usarla? (5)
Aquí está mi código ejecutándose sin problemas en PHP:
Lado del cliente:
<div class="g-recaptcha" data-sitekey="PUBLIC_KEY"></div>
Lado del servidor:
if (isset($_POST[''g-recaptcha-response''])) {
$captcha = $_POST[''g-recaptcha-response''];
$privatekey = "SECRET_KEY";
$url = ''https://www.google.com/recaptcha/api/siteverify'';
$data = array(
''secret'' => $privatekey,
''response'' => $captcha,
''remoteip'' => $_SERVER[''REMOTE_ADDR'']
);
$curlConfig = array(
CURLOPT_URL => $url,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => $data
);
$ch = curl_init();
curl_setopt_array($ch, $curlConfig);
$response = curl_exec($ch);
curl_close($ch);
}
$jsonResponse = json_decode($response);
if ($jsonResponse->success == "true")
doSomething();
else
doSomeOtherThing();
:)
Recientemente me registré en el sitio web oneplusone https://account.oneplus.net/sign-up , y noté esta casilla de verificación recaptcha
¿Cómo funciona y cómo puedo usarlo en mis sitios? Mucho mejor que esas palabras / dígitos crípticos :)
El sitio de recaptcha no menciona ningún nuevo método de recaptcha ... https://www.google.com/recaptcha/intro/index.html
Esta es una API beta para reCAPTCHA. Lo recojo del origen de su API de JS: https://www.google.com/recaptcha/api.js haciendo referencia a "API2". Y también encontré esto: http://jaswsinc.com/recaptcha-ads/ Al parecer, hicieron una versión beta de solo invitación de su "no CAPTCHA reCAPTCHA" Entonces ... Probablemente no podrá hacerlo funcionar en su sitio, aún. No puedo encontrar información sobre cómo participar en la versión beta, pero si busca "No CAPTCHA reCAPTCHA beta", puede ver a varias personas que han mencionado recibir el correo electrónico de Google para que se unan.
Si encuentra un lugar para ingresar a la versión beta, ¡por favor comparta! De lo contrario, parece que llegará el lanzamiento público en 2015 ...
Gracias a todos por su contribución a este hilo, es genial ver a tanta gente interesada en la nueva herramienta recaptcha.
No pude encontrar una implementación de .NET, así que he creado un control simple de formularios web, que puede encontrar aquí https://github.com/pnmcosta/recaptchav2dotnet
Vine aquí en mi búsqueda, no vi una respuesta, y seguí buscando.
Después de mi búsqueda, esta ventana todavía estaba abierta, así que estoy actualizando esta publicación con mis hallazgos.
Aquí es donde puedes aprender sobre reCAPTCHA :
http://scraping.pro/no-captcha-recaptcha-challenge/
Básicamente, sin embargo, agregas esto a tu página web:
<script src="https://www.google.com/recaptcha/api.js" >;
<form method="post">
<div class="g-recaptcha" data-sitekey="[site key issued by google]"></div>
<input value="submit" type="submit" />
</form>
Para obtener sus claves reCAPTCHA , vaya a este sitio de Google:
https://www.google.com/recaptcha/intro/index.html
Una vez que tenga sus llaves usando el enlace de arriba, puede profundizar en la codificación de esto usando la siguiente información de Google:
https://developers.google.com/recaptcha/
NOTA:
De la documentación de Google:
El script debe cargarse utilizando el protocolo HTTPS y puede incluirse desde cualquier punto de la página sin restricciones.
Aquí hay un ejemplo de cómo lo hice funcionar:
<html>
<head>
<title>Contact</title>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<script>
var onloadCallback = function () {
grecaptcha.render(''dvCaptcha'', {
''sitekey'': ''<%=ReCaptcha_Key %>'',
''callback'': function (response) {
$.ajax({
type: "POST",
url: "CS.aspx/VerifyCaptcha",
data: "{response: ''" + response + "''}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (r) {
var captchaResponse = jQuery.parseJSON(r.d);
if (captchaResponse.success) {
$("[id*=txtCaptcha]").val(captchaResponse.success);
$("[id*=lblAlarm]").hide();
} else {
$("[id*=txtCaptcha]").val("");
$("[id*=lblAlarm]").show();
var error = captchaResponse["error-codes"][0];
$("[id*=lblAlarm]").html("RECaptcha error. " + error);
}
}
});
}
});
};
</script>
</head>
<body>
<form action="?" method="POST">
<div id="dvCaptcha" class="g-recaptcha" data-sitekey="[site key issued by google]"></div>
<br />
<asp:Button ID="btnSubmit" runat="Server" Text="Send" OnClick="btnSubmit_Click" />
<asp:Label ID="lblAlarm" runat="server" ForeColor="Red"></asp:Label>
</form>
</body>
</html>
Si necesita validar en el código subyacente ASP.NET, simplemente verifique que el control "g-recaptcha-response" esté completo:
protected static string ReCaptcha_Key, ReCaptcha_Secret;
protected void btnSubmit_Click(object sender, EventArgs e)
{
if (!String.IsNullOrEmpty(Request.Form["g-recaptcha-response"]))
{
// other code
} else
{
lblAlarm.Text = "reCAPTCHA failed.";
}
}
Con suerte, algunos de ustedes lo encuentran útil.
Esta entrada no responde la pregunta original, sin embargo, ayuda a implementar una solución similar. Como dijo @IanM, checkbox recaptcha está en fase beta y no se puede usar sin invitación.
EDITACIÓN IMPORTANTE Google presentó el nuevo reCAPTCHA
- googleonlinesecurity.blogspot.hu/2014/12/… googleonlinesecurity.blogspot.hu/2014/12/…
- https://www.google.com/recaptcha/intro/index.html
Este es un CAPTCHA basado en JavaScript.
Como la mayoría de los spambots no ejecutan JavaScript y no pueden identificar la correlación entre el texto mostrado y el DOM o las acciones requeridas, no pueden hacer clic en la casilla de verificación.
Tenga en cuenta que no hay ninguna casilla de verificación, es solo un elemento div con un poco de estilo CSS. Los Spambots intentan llenar los elementos de entrada del formulario, pero no hay entrada en el CAPTCHA. La marca de verificación es solo otra div (clase css).
Al hacer clic en el cuadro, una solicitud de ajax notifica al servidor que se hizo clic en el elemento div y el servidor almacena esta información en un almacenamiento temporal (marca el token: un token activó este token). Cuando envía el formulario, un campo oculto envía el token que se activó, y luego, cuando el servidor valida la información del formulario, reconocerá que el token se activó. Si el token no está activado, el formulario será invalidado.
Los pasos en viñetas:
- Genere un identificador único y agréguelo al formulario con una entrada oculta
- Renderice una casilla de verificación en el sitio (sin usar el elemento
<input>
, posiblemente usando<div>
) y agregue el identificador generado previamente (puede usar los atributos html5data-*
) - Cuando el usuario hace clic en la casilla de verificación, envíe una solicitud ajax al servidor y valide el CAPTCHA. Si es válido, márquelo como
in use
. (Muestre el resultado - el identificador está OK / no OK - para el usuario) - Cuando el usuario envía el formulario, los datos del formulario contienen el identificador. Compruébelo una vez más, debería existir y debería estar en estado de
in use
. - Si se pasan todas las validaciones, los datos del formulario están listos para usar / procesar
Puede vincular el identificador a la sesión del usuario, la dirección IP y / o puede usar límites de tiempo para mejorar la seguridad.
NOTA ¡ Este tipo de CAPTCHA solo funciona cuando el JavaScript está habilitado!
NOTA (edición 1) Como @crazypotato declaró, hay algunas herramientas de automatización, que pueden ejecutar JavaScript, estas herramientas también son capaces de enviar la solicitud AJAX adecuada y disparar el evento Click en la casilla de verificación div.
NOTA (edición 2) Tenga en cuenta que una secuencia de comandos escrita específicamente para un sitio o para romper un tipo de captcha se superará tarde o temprano. No hay protección definitiva, solo puedes hacer que los bots (o sus desarrolladores) trabajen más duro.
NOTA (edición 3) Los pasos y la descripción en esta respuesta solo contienen información básica sobre este tipo de captcha, siempre debe agregar validaciones adicionales y pasos de seguridad para hacerlo más seguro. Por ejemplo, Google noCaptcha dispara sistemáticamente un reCaptcha estándar después de 3 "clics div".