2011-02-24 19 views
5

¿Tiene PHP su propia versión del token de autenticidad de Rails?¿PHP tiene un token de autenticidad como Rails?

<meta name="csrf-token" content="<%= form_authenticity_token %>" /> 
<meta name="csrf-param" content="authenticity_token" /> 

Si no es así, ¿cuál es la mejor manera de lograr la misma funcionalidad?

+0

Esto es para la protección CSRF. Pero la protección CSRF ahora se puede hacer sin tales tokens, solo con parámetros especiales de cookies. Es posible que desee echar un vistazo a https://github.com/delight-im/PHP-Auth que lo hace automáticamente. – caw

Respuesta

8

Cuando se muestra en forma:

$token = md5(time() . rand(1,100)); 
$_SESSION['token'] = $token; 

<input type='hidden' name='token' value='<?=$token;?>'/> 

Después de la POST:

if(empty($_POST['token']) || $_POST['token'] !== $_SESSION['token']){ 
    exit("Bad token!"); 
} 
unset($_SESSION['token']); 
+0

¿Cómo calificaría eso en contra de usar algo como recaptcha? Noté que Twitter no usa un captcha para sus formularios de registro <- de ahí que obtuve la idea ... – Booski

+0

Un token protege de los ataques CSRF, pero captcha bloquea a los usuarios no humanos (y protege de CSRF). ¿Cuál estás buscando? –

+0

Ambos ... ¿Cómo se sale con Twitter? – Booski

Cuestiones relacionadas