Este es un ejemplo de los métodos mágicos __set() y __get() en una clase con sus respectivas validaciones utilizando el método property_exists
<?php
class Objeto {
private $id;
private $nombre;
private $email;
function __construct($id, $nombre, $email) {
$this->id...
30 de abril de 2015
Sessiones PHP
Por omisión, PHP usa el gestor interno de almacenamiento files, el cual se establece mediante session.save_handler. Éste guarda los datos de sesión en el servidor en la ubicación especificada por la directiva de configuración session.save_path, pode defecto se encuentra en session.save_path = "c:/wamp/tmp"
Para...
Session Hijackin PHP
Session Hijacking (secuestro o robo de sesión) se refiere a que un individuo (atacante) consigue el identificador de sesión entre una página web y un usuario, de forma que puede hacerse pasar por el usuario y acceder a su cuenta en esa página web.
A continuación veremos algunas de las formas en las...
Caducar sessiones PHP
En el php.ini esta un atributo llamado 'session.cookie_lifetime', si está en 0 va a durar hasta que el navegador se cierre tambien puedes indicar cuanto debe durar la cookie de sesion, en esta línea session.gc_maxlifetime = 1440 que esta dado en segundos, cambias el 1440 por el número de segundos que...
29 de abril de 2015
Session Fixation PHP
Session fixation
Session fixation (fijación de sesión) es un método de Session hijacking (robo de sesión) un poco especial, ya que, si normalmente en el robo de sesión se intenta conseguir el identificador de sesión de un usuario ya autenticado, la fijación de sesión se basa en asignar un identificador...
Login PHP con crypt() y Blowfish
En esta entrada se utilizara la función crypt() y Blowfish, otra opción muy aceptable es utilizar password_hash(), dejo este link con una explicación del tema en Login PHP con password_hash(), pasando a la función crypt() con Blowfish como algoritmo de hash lo que se busca es mejorar un método común...
Login PHP con password_hash()
Primero una aclaración…como no guardar contraseñas
No guardar contraseñas en texto plano, esto debería ser obvio ya que si alguien tiene acceso a tu base de datos y a las contraseñas de tus usuarios, si un ataque externo…o interno(en quien confias?)…expone las contraseñas de tus usuarios, tu trabajo...
23 de abril de 2015
ob_start PHP
Al programar en PHP primero se realiza un procesamiento de la página que se muestra en el ordenador del usuario, luego se envía la petición al servidor y por último se envía al ordenador del usuario el resultado de procesar el código PHP.
Por regla general, a medida que va procesando la página, se...
22 de abril de 2015
Patrón Dependency Injection
Robert C. Martin afirma en el Principio de Inyección de Dependencias:
A. Las clases de alto nivel no deberían depender de las clases de bajo nivel. Ambas deberían depender de las abstracciones.
B. Las abstracciones no deberían depender de los detalles. Los detalles deberían depender de las abstracciones.
Con...
file_get_contents() y file_put_contents() en PHP
file_get_contents() se utiliza para obtener archivos desde PHP y es equivalente a usar
fopen(), fgets() y fclose() por lo que es la manera abreviada y preferida de transmitir el contenido de un fichero a una cadena. Usa técnicas de mapeado de memoria, si está soportado por su sistema operativo, para...
20 de abril de 2015
XSS (Cross-site scripting) PHP
Seguridad PHP - Cross Site Scripting (XSS)
Es una vulnerabilidad que aprovecha la falta de mecanismos de filtrado y validación en los campos de entrada. Permitiendo así el envío de scripts completos (como Visual Basic Scripts o JavaScripts) con secuencias de comandos maliciosos que podrían impactar...
register_globals() en PHP...porque no?
El primer paso antes de validar cualquier datos de entrada, es comprobar que la directiva register_globals este desactivada. Desde PHP 5.3 fue declarada obsoleta y a partir de la versión 5.4 fue eliminada. Pero hay que tener cuidado si se usa una versión de PHP anterior. Por lo que podemos usar la...
17 de abril de 2015
PHP PDO Singleton CRUD
Lo primero es crear la clase Singleton que implementara el patrón de diseño Singleton que servirá para asegurarnos de crear una instancia de clase única, estas características las utilizaremos para conectarnos a la base de datos.
Te recomiendo veas esta entrada en caso quieras conocer mas detalladamente...
15 de abril de 2015
PHP PDO y Procedimientos Almacenados MySQL
Se trataran diferentes escenarios y en toda la entrada se trabajara la sentencia SELECT en un procedimiento almacenado en MySQL que variara según el numero y el tipo de parámetros que acepte o que entregara. La tabla a utilizarse tiene por nombre empleado_php la cual tiene solamente dos campos varchar:...