Diferencia entre revisiones de «Como crear llave de seguridad en los formularios»
De KumbiaPHP Framework Wiki
(Página creada con 'Copiamos la clase y la guardamos en la siguiente dirección miapp/libs/security_key.php <source lang=php line> <?php class SecurityKey { /** * Genera un input tipo ...') |
|||
Línea 1: | Línea 1: | ||
+ | Esta es una buena clase que nos permite verificar que el formulario enviado por el cliente coincide con una llave almacenada en sesion. | ||
+ | |||
+ | Forma de uso: | ||
+ | |||
+ | En la vista y antes de hacer el cierre del formulario imprimimos la llave | ||
+ | |||
+ | <source lang=php line> | ||
+ | <?php echo SecurityKey::generateKey(); ?> | ||
+ | </source> | ||
+ | |||
+ | Esto nos generará un input tipo hidden asi: | ||
+ | |||
+ | <source lang=html> | ||
+ | <input type='hidden' id='rsa32_key' name='rsa32_key' value='7e3dd021785706cf2467bbad3382d08a13f192b3' /> | ||
+ | </source> | ||
+ | |||
+ | |||
Copiamos la clase y la guardamos en la siguiente dirección | Copiamos la clase y la guardamos en la siguiente dirección | ||
Línea 18: | Línea 35: | ||
$time = uniqid().mktime($h, 0, 0, date("m"), date("d"), date("Y")); | $time = uniqid().mktime($h, 0, 0, date("m"), date("d"), date("Y")); | ||
$key = sha1($time); | $key = sha1($time); | ||
− | $_SESSION[' | + | $_SESSION['rsa32_key'] = $key; |
− | return "<input type='hidden' id=' | + | return "<input type='hidden' id='rsa32_key' name='rsa32_key' value='$key' />\r\n"; |
} | } | ||
Línea 31: | Línea 48: | ||
public static function isValid () { | public static function isValid () { | ||
− | $key = isset($_SESSION[' | + | $key = isset($_SESSION['rsa32_key']) ? $_SESSION['rsa32_key'] : null; |
− | if( (!is_null($key) ) && ($key === Input::post(' | + | if( (!is_null($key) ) && ($key === Input::post('rsa32_key')) ) { |
return true; | return true; | ||
} else { | } else { | ||
Línea 47: | Línea 64: | ||
public static function getKey() { | public static function getKey() { | ||
− | $key = isset($_SESSION[' | + | $key = isset($_SESSION['rsa32_key']) ? $_SESSION['rsa32_key'] : null; |
return $key; | return $key; |
Revisión del 00:41 7 ago 2010
Esta es una buena clase que nos permite verificar que el formulario enviado por el cliente coincide con una llave almacenada en sesion.
Forma de uso:
En la vista y antes de hacer el cierre del formulario imprimimos la llave
<?php echo SecurityKey::generateKey(); ?>
Esto nos generará un input tipo hidden asi:
<input type='hidden' id='rsa32_key' name='rsa32_key' value='7e3dd021785706cf2467bbad3382d08a13f192b3' />
Copiamos la clase y la guardamos en la siguiente dirección
miapp/libs/security_key.php
<?php
class SecurityKey {
/**
* Genera un input tipo hidden con el valor de la llave
*
* @return string
*/
public static function generateKey(){
$h = date("G")>12 ? 1 : 0;
$time = uniqid().mktime($h, 0, 0, date("m"), date("d"), date("Y"));
$key = sha1($time);
$_SESSION['rsa32_key'] = $key;
return "<input type='hidden' id='rsa32_key' name='rsa32_key' value='$key' />\r\n";
}
/**
* Devuelve el resultado de la llave almacenada en sesion
* con la enviada en el form
*
* @return boolean
*/
public static function isValid () {
$key = isset($_SESSION['rsa32_key']) ? $_SESSION['rsa32_key'] : null;
if( (!is_null($key) ) && ($key === Input::post('rsa32_key')) ) {
return true;
} else {
return false;
}
}
/**
* Devuelve la ultima llave almacenada en sesion
*
* @return string
*/
public static function getKey() {
$key = isset($_SESSION['rsa32_key']) ? $_SESSION['rsa32_key'] : null;
return $key;
}
}
?>
Para cualquier comentario referente a esta clase, puedes acudir al IRC, la lista de correo o el Foro de KumbiaPHP.