Introducción a Cookies con PHP y Javascript

0
894

En este tutorial, vamos a centrarnos en los aspectos básicos de las Cookies, aprenderemos acerca de su funcionalidad en aplicaciónes Web y aprender a usar dentro de nuestros proyectos PHP y JavaScript. Después de leer esto, usted habrá adquirido las habilidades necesarias para implementar las cookies establecer con seguridad en sus propias aplicaciones Web.

Comprendiendo las cookies

Las cookies son archivos de texto que se guardan en su ordenador, transferidos a través del protocolo HTTP. Este es el protocolo utilizado por los navegadores para recuperar y enviar archivos al servidor. Después de una cookie se ha solicitado, se envía al servidor cada vez que se fue a buscar un nuevo elemento en la página web en el navegador. A continuación, podemos ver un fragmento de un servidor que solicita una nueva cookie (este fragmento es una parte de una respuesta HTTP).
[javascript]
Set-Cookie: Name=content data;
expires=Fri, 31-Dec-2010 23:59:59 GMT;
path=/; domain=.example.net
[/javascript]
donde:

  • Set-Cookie: es la petición del Servidor al navegador para crear una nueva cookie.
  • Name: Es el nombre de la cookie, cada cookie puede pesar hasta 4kb.
  • expires: Es la variable que guarda la fecha de vencimiento, debe ser del siguiente formato (“Wdy, DD-Mon-YYYY HH:MM:SS GMT”)
  • domain: es el dominio donde la cookie estara activa, la cookie solo se enviara al servidor de ese dominio.
  • path: es el directorio donde se enviara la cookie, significa que si establecemos /images, solo se enviara la cookie cuando ingresemos a ese directorio.

Trabajar con cookies en PHP

La cosa más importante a recordar, cuando se crea una cookie en PHP, se debe establecer todas las cookies antes de enviar los datos al navegador . Esto significa que usted debe siempre inicializar nuevas cookies antes de cualquier salida. Esto incluye comandos echo() o print(), y las etiquetaso. Por supuesto, hay algunas excepciones, pero esta es una regla general.
[php]
<!–?php <br ?–>
$name = &#039;clientname&#039;;
$value = &#039;Peter Griffin&#039;;
$expireDate = time() + 60 * 30;
$path = &#039;/example/&#039;;
$domain = &#039;test.envato.com&#039;;
$secure = false;
$httponly = true;
setcookie( $name, $value, $expireDate, $path, $domain, $secure, $httponly);
?>
[/php]
Esto debe parecer familiar a estas alturas, a excepción de $secure y $httponly .
$secure es forzar la cookie sólo se enviar si una conexión HTTPS se ha establecido, si se establece en true, y normalmente se debe establecer en false.
$httponly hace que la cookie sólo esté disponible a través del protocolo HTTP, lo que significa que el lado del cliente, los lenguajes de JavaScript y VBScript, no podran acceder a la cookie. Esto ayuda a evitar cosas desagradables, como el Cross Site Scripting , y debe establecerse en true si usted no tiene intenciones de modificar las cookies cara al cliente con un lenguaje como JavaScript. Además, para evitar malentendidos “, httponly” no significa que las cookies no pueden ser enviados a través de HTTPS, ya que todavía puede, de hecho. Sin embargo, por favor tenga en cuenta que el código anterior se puede hacer bastante más pequeño:
[php]
<!–?php setcookie( &#039;clientname&#039;, &#039;Peter Griffin&#039;, time()+60*30, &#039;/example/&#039;, &#039;test.envato.com&#039;, false,true); ?–>
[/php]
Ahora podemos crear cookies, pero tenemos que ser capaces de leer también. Por suerte para nosotros, PHP hace esto muy fácil una vez que una cookie que ya se ha creado.Hay una variable de entorno llamada $_COOKIE[], que puede ser utilizado para extraer el valor de la cookie. Para usarlo, basta con insertar el nombre de la cookie en el interior de los corchetes [], así:
[php]
<!–?php $cookieValue = $_COOKIE[&#039;name of the cookie&#039;]; ?–>
[/php]
Esta variable de entorno se puede utilizar como cualquier otra. Al igual que $_GET[] y $_POST[], que puede ser tratada directamente como una variable normal (una vez que haya comprobado si la cookie existe realmente por supuesto) si así lo desea.

Trabajar con cookies en JavaScript

Las cookies pueden ser leídas y escritas en el cliente también. A pesar de que JavaScript no ofrece una solución agradable de leer y escribir cookies, resulta posible y ampliamente utilizado. JavaScript utiliza el objeto document.cookie para la manipulación de cookies, como se muestra en el siguiente ejemplo:
[javascript]
var expiredate = new Date();
expiredate.setHours( expiredate.getHours() + 5);
document.cookie = &#039;cookiename=cookievalue; expires=&#039; + expiredate.toUTCString() + &#039;path=/example/; domain=test.envato.com&#039;;
[/javascript]
Como te habrás dado cuenta, esta sintaxis es muy similar a la notación protocolo HTTP. Esto tiene la ventaja de ser más en el control, sino que también introduce algunos problemas potenciales. A continuación se muestra el fragmento depara leer una cookie.
[javascript]
var cookieName = &#039;testcookiename&#039;;
var textArray = document.cookie.split(&#039;;&#039;);
for(var i = 0; i < textArray.length; i++){
var textPiece = textArray[i]; //contains 1 string piece
while(textPiece(0)==&#039; &#039;) textPiece = textPiece.substring(1,textPiece.length);
if (textPiece.indexOf(cookieName)== 0){
return textPiece.substring(cookieName.length,c.length);
}
}
[/javascript]
A continuación unas funciones JavaScript para escribir y leer cookies facilmente:
[javascript]
function writeCookie(cookieName, cookieValue, expireHours, path, domain){
var date = new Date();
date.setHours(date.getHours + expireHours);
document.cookie = cookieName+&#039;=&#039;+cookieValue+&#039;; expires=&#039;+date+ &#039;; path=&#039; + path + &#039;; domain=&#039; + domain;
}
function readCookie(cookieName){
var textArray = document.cookie.split(&#039;;&#039;);
for(var i = 0; i < textArray.length; i++){
var textPiece = textArray[i];
while(textPiece(0)==&#039; &#039;) textPiece = textPiece.substring(1,textPiece.length);
if (textPiece.indexOf(cookieName)== 0) return textPiece.substring(cookieName.length,c.length);
}
}
[/javascript]

Mejores Prácticas

  • Nunca introduzca datos privados en una cookie. Un cliente puede estar navegando en una computadora pública, por lo que no deja ninguna información personal detrás.
  • Nunca te fíes de los datos procedentes de las cookies. Siempre filtro cadenas y números! Un atacante podría escribir datos malintencionados a la cookie con el fin de hacer algo que usted no desea que su servicio haga.
  • Trate de calcular cuánto tiempo la cookie debería ser válido, y establecer la fecha de caducidad en consecuencia. No debe acaparar el ordenador del cliente con cookies viejas que expiren dentro de cien años por ejemplo.
  • Ponga siempre el seguro y httponly para satisfacer sus exigencias de aplicación. Si su aplicación no desea editar las cookies con JavaScript permitir httponly. Si siempre tiene una conexión HTTPS, permitir el parametro secure. Esto mejora la integridad de datos y confidencialidad.

Vía

zp8497586rq