2011-01-26 8 views
5

He visto un formulario que tiene los siguientes elementos ocultos. El primero es obviamente un token de seguridad para CSRF, pero ¿cuál es el segundo? Es más o menos una imagen. ¿Qué seguridad adicional me daría? y ¿cómo puedo generar uno?¿Por qué este extraño símbolo en el elemento oculto?

<input type="hidden" value="G2k2DNFer3z2NR0zYO" name="key"> 
<input type="hidden" value="☃" name="_face"> 
<input type="hidden" value="home" name="ref_source"> 
+5

Es extraño que se llame '_face', porque [en realidad es un muñeco de nieve] (http://unicodesnowmanforyou.com). – BoltClock

+0

@BoltClock Cool, ¡incluso tiene su propio sitio web! – samquo

+0

@BoltClock El símbolo de muñeco de nieve es en realidad uno de [muchos caracteres en el bloque "Símbolos misceláneos"] (http://unicode.org/charts/PDF/U2600.pdf) tal como lo define el estándar Unicode. :-) –

Respuesta

9

Ese muñeco de nieve es en realidad un personaje en Unicode (U + 2603) y es probable que se utiliza para comprobar si el cliente utiliza una codificación adecuada personaje (probablemente UTF-8) o no, por ejemplo:

$isUtf8 = $_POST['_face'] === "\xE2\x98\x83"; 
+0

¡esta es una gran respuesta! +1 – Harish

+0

Ya veo. Entonces, ¿esto es algo que todos deberíamos hacer en nuestras formas? Pregunto porque el sitio web obtendría esta información solo después de que el usuario envíe el formulario, de modo que cuando la página se está presentando por primera vez, esta información no está disponible. ¿Por qué podría el sitio web necesitarlo después de eso? – samquo

+0

@samquo: Hay algunos que sugieren hacer esto para distinguir UTF-8 de otras codificaciones de caracteres (ver por ejemplo ["Unicode y otros personajes divertidos" en dev.mysql.com] (http://dev.mysql.com /tech-resources/articles/4.1/unicode.html)). Pero no estoy seguro de si eso es realmente necesario. Porque, en general, el cliente utiliza la codificación de caracteres especificada en el atributo ['accept-charset'] (http://www.w3.org/TR/html4/interact/forms.html#adef-accept-charset) o la misma codificación de caracteres con la que se sirvió el documento de formulario. – Gumbo

Cuestiones relacionadas