Ver Mensaje Individual
  #9 (permalink)  
Antiguo 29/06/2009, 08:56
Avatar de abidibo
abidibo
 
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 14 años, 11 meses
Puntos: 7
Respuesta: bloquear formularios externos con php.

Tambien algo asi:
Código PHP:
function generateFormToken($formName)
{
  
$token md5(uniqid(microtime(), true));
  
$_SESSION[$formName.'_token'] = $token;
  return 
$token;
}

function 
verifyFormToken($formName)
{
  
$index $formName.'_token';
  
// There must be a token in the session
  
if (!isset($_SESSION[$index])) return false;
  
// There must be a token in the form
  
if (!isset($_POST['token'])) return false;
  
// The token must be identical
  
if ($_SESSION[$index] !== $_POST['token']) return false;
  return 
true;

y luego en el formulario:
Código PHP:

$newToken 
generateFormToken('loginForm');
  ... 
Display Form ...
echo 
"<input type='hidden' name='token' value='$newToken'>";
  ... 
Rest of Form ... 
y en la action:
Código PHP:
if (!verifyFormToken('loginForm')) {
  die(
'CSRF Attack detected OR External form processing detected');
}
... 
Form Processing ... 
Esto es muy bueno porque es una manera funcional y general para bloquear tambien CSRF ataques.
Chao!