Edición de «Como crear llave de seguridad en los formularios»

De KumbiaPHP Framework Wiki

Advertencia: no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si inicias sesión o creas una cuenta, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.

Puedes deshacer la edición. Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces guarda los cambios para así efectuar la reversión.

Revisión actual Tu texto
Línea 1: Línea 1:
{{cleanupbox
+
Copiamos la clase y la guardamos en la siguiente dirección
|image=[[Archivo:Information_icon4.png|20px]]
 
|texto ='''Articulo realizado para Spirit 1.0~b2+dev.'''<br />
 
}}
 
 
 
Esta es una buena clase que nos permite verificar que el formulario enviado por el cliente coincide con una llave almacenada en sesion.
 
 
 
1. Copiamos la clase y la guardamos en la siguiente dirección
 
  
 
miapp/libs/security_key.php
 
miapp/libs/security_key.php
Línea 25: Línea 18:
 
         $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['rsa32_key'] = $key;
+
         $_SESSION['key'] = $key;
 
                  
 
                  
         return "<input type='hidden' id='rsa32_key' name='rsa32_key' value='$key' />\r\n";
+
         return "<input type='hidden' id='key' name='key' value='$key' />\r\n";
 
     }
 
     }
  
Línea 38: Línea 31:
 
     public static function isValid () {
 
     public static function isValid () {
  
         $key = isset($_SESSION['rsa32_key']) ? $_SESSION['rsa32_key'] : null;
+
         $key = isset($_SESSION['key']) ? $_SESSION['key'] : null;
  
         if( (!is_null($key) ) && ($key === Input::post('rsa32_key')) ) {
+
         if( (!is_null($key) ) && ($key === Input::post('key')) ) {
 
             return true;
 
             return true;
 
         } else {
 
         } else {
Línea 54: Línea 47:
 
     public static function getKey() {
 
     public static function getKey() {
  
         $key = isset($_SESSION['rsa32_key']) ? $_SESSION['rsa32_key'] : null;
+
         $key = isset($_SESSION['key']) ? $_SESSION['key'] : null;
  
 
         return $key;
 
         return $key;
Línea 63: Línea 56:
 
?>
 
?>
 
</source>
 
</source>
 
 
2. 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=text>
 
<input type='hidden' id='rsa32_key' name='rsa32_key' value='7e3dd021785706cf2467bbad3382d08a13f192b3' />
 
</source>
 
 
 
* En el controller o en el modelo verificamos la llave
 
 
<source lang=php line>
 
 
public function create () {
 
 
  if( Input::hasPost('menus') ) {
 
 
    if(SecurityKey::isValid()) {
 
 
      $menu = new Menus(Input::post('menus'));
 
 
      if(!$menu->save()){
 
 
        Flash::error('Falló Operación');
 
 
      }else{
 
 
        Flash::valid('Operación exitosa');
 
        Input::delete();
 
 
      }
 
 
    } else {
 
 
      Flash::error('Acceso incorrecto al sistema');
 
 
    }
 
 
  } 
 
       
 
}
 
</source>
 
 
  
 
Para cualquier comentario referente a esta clase, puedes acudir al IRC, la lista de correo o el Foro de KumbiaPHP.
 
Para cualquier comentario referente a esta clase, puedes acudir al IRC, la lista de correo o el Foro de KumbiaPHP.
 
[[Categoría:Tutoriales KumbiaPHP]]
 
[[Categoría:Seguridad]]
 

Ten en cuenta que todas las contribuciones a KumbiaPHP Framework Wiki pueden ser editadas, modificadas o eliminadas por otros colaboradores. Si no deseas que las modifiquen sin limitaciones, no las publiques aquí.
Al mismo tiempo, asumimos que eres el autor de lo que escribiste, o lo copiaste de una fuente en el dominio público o con licencia libre (véase Proyecto:Derechos de autor para más detalles). ¡No uses textos con copyright sin permiso!

Para editar esta página, responde la pregunta que aparece abajo (más información):

Cancelar Ayuda de edición (se abre en una ventana nueva)

Plantilla usada en esta página: