|

PhpSecInfo: información sobre la seguridad de tu PHP

PhpSecInfo es un equivalente a phpinfo() que nos muestra información similar a este pero indicando los puntos negros en nuestra instalación, mediante una serie de test realizados miediante una única llamada en el entorno de PHP, identifica posibles problemas de seguridad y ofrece soluciones.
phpsecinfo.png
Eso sí, hay que tener en cuenta que PhpSecInfo no sustituye métodos de programación para evitar problemas de seguridad y no hace comprobaciones de nuestro código PHP, tan solo detecta posibles fallos de seguridad.
PhpSecInfo

links for 2007-04-03

Ajax Solutoire: recursos Ajax

solutoire.pngAjax Solutoire es un listado de recursos Ajax muy extenso el cual nos puede sacar de un buen apuro.
Entre los enlaces que nos ofrece encontramos tutoriales de Javascript, de los cuales me ha gustado A (Re)-Introduction to JavaScript. También nos ofrece un listado de enlaces sobre depuración de Javascript, yo la verdad me quedo con Firebug y me olvido del resto, pero bueno, no todo el mundo tiene que tener mis preferencias. Sobre el listado de editores de Javascript debo decir que es muy pobre, si mal no creo todos están basados en Eclipse (jDeveloper también lo está si mal no creo) y todos basados en el mundo Java.
La serie de enlaces sobre tutoriales de Ajax es extensa, y a mí me gusta recomendar todo lo que sea sobre Ajax y accesibilidad, algo bastante importante y que a veces olvidamos un poco.
También aporta enlaces para las librerías más conocidas que tratan Ajax, como pueden ser Scriptaculous, Prototype y Mootols.
Un lugar que tener en nuestros favoritos.
Ajax.solutoire.com
Vía / Proletarium

Trabajar con variables de entorno en Apache

Aunque se llamen variables de entorno, realmente son variables tratadas por Apache, y no las mismas que trata el S.O. Mediante estas variables se puede enviar información a las CGIs u otros programas externos, así esta información podrá ser utilizada en operaciones de acceso a la aplicación.
En el artículo que os presentamos explican detalladamente una introducción a la manipulación de estas variables de entorno, ya sea modificándolas o enviándolas.
Por ejemplo, podemos ver cómo modificar las variables para situaciones específicas: usar la versión antigua de HTTP/1.0 para todas las peticiones o tratar con cuidado las redirecciones cuando sabemos que el cliente no las sabe tratar del todo bien.
Apache Variable Fun in htaccess

|

Laboratorio: navegación por teclado

Ya en varios sitios se ha mostrado como realizar la navegación mediante el teclado, esto significa usar las teclas para acceder a contenidos o para realizar acciones.

Nosotros queremos darle un toque de automatización, que tan solo sea necesario añadir un enlace interno en el documento para acceder a la zona del documento.

Crearemos un script que obtenga todos los enlaces internos del documento y si tienen el atributo rel y su valor tiene el formato “formato:[letra]“, se considerará un objetivo para la navegación por teclado. La letra será la que se usará para acceder y pueden repetirse, por lo que si se repiten las teclas para el shortcut, se irán alternando uno a uno los distintos enlaces.

El script consta de dos partes, uno que se ejecuta después de la carga del documento y que recupera todos los enlaces internos y los agrupa por shortcut, y otro que captura el evento onkeydown del document para acceder a la zona del documento (que será modificando el location).

var __SHORTCUTS__ = {
// Guarda los shortcuts con los enlaces
shortcuts: new Array(),
// Índice del enlace actual organizado por shortcuts
idx_shortcuts: new Array(),
// Obtiene todos los enlaces internos y los que corresponden a un shortcut los almacena
leer_shortcuts: function(e) {
var objs = document.getElementsByTagName("A");
for (var i=0; i<objs.length; i++) {
var rel = objs[i].rel;
if (rel && rel.match(/shortcut:[a-z]/i) && objs[i].name) {
var tipo = (rel.substring(rel.indexOf(":")+1)+"").toUpperCase().substring(0, 1);
if (!__SHORTCUTS__.shortcuts[tipo]) {
__SHORTCUTS__.shortcuts[tipo] = new Array();
__SHORTCUTS__.idx_shortcuts[tipo] = 0;
}
__SHORTCUTS__.shortcuts[tipo][__SHORTCUTS__.shortcuts[tipo].length] = objs[i];
}
}
// Capturo el evento de pulsado de teclado en el document
document.onkeydown = __SHORTCUTS__.controlar_keypress;
},
// Captura una tecla pulsada y accede al shortcut que tenga asociado
controlar_keypress: function(e) {
try {
if (!e) e = event;
var key = e.keyCode;
// Obtengo el caracter correspondiente, quizás esto falle, no he hecho pruebas suficientes
var c = String.fromCharCode(key);
// Si es una letra
if (c.match(/^[a-z]$/i)) {
// Obtengo el enlace para el shortcut
var obj = __SHORTCUTS__.shortcuts[c.toUpperCase()][__SHORTCUTS__.idx_shortcuts[c.toUpperCase()]];
// Acceso a esa parte del documento
document.location = "#"+obj.name;
// Incremento el indice para que acceda al siguiente
__SHORTCUTS__.idx_shortcuts[c.toUpperCase()] = (__SHORTCUTS__.idx_shortcuts[c.toUpperCase()]+1)%__SHORTCUTS__.shortcuts[c.toUpperCase()].length;
}
} catch (e) {} // En IE me da un error que no llego a comprender, ¡cómo no!
}
}
// Cargo el proceso en el onload
if (window.addEventListener) {
window.addEventListener("load", function(event) {__SHORTCUTS__.leer_shortcuts(event);}, false);
} else if (window.attachEvent) {
window.attachEvent("onload", function(event) {__SHORTCUTS__.leer_shortcuts(event);});
} else {
document.onload = function(event) {__SHORTCUTS__.leer_shortcuts(event);}
}

Para indicar qué elementos tienen shortcut, modificamos los estilos para mostrar subrayada la primera letra del elemento, para lo cual el elemento debe tener el atributo title con valor “SHORTCUT: [letra]“. Mejorando así la accesibilidad ya que no añadimos ninguna etiqueta para la primera letra. Por supuesto en IE6 no funciona y con la etiqueta legend tampoco me funciona.

*[title~="SHORTCUT:"]:first-letter {
padding-bottom: 2px;
border-bottom: 1px dotted #000000;
}

Para este ejemplo tenemos dos tipos de shortcuts: ‘P’ para ciertos párrafos y ‘C’ para acceder al formulario de comentarios.

Ejemplo

|

Koala: herramientas para hacer how-to

koala.pngIBM está desarrollando una extensión para Firefox llamada Koala que permite grabar la actividad que se desarrolla en el navegador y generar un script que se guardará en una página y que podrá ser consultado.
El ejemplo que nos ofrecen muestra cómo se accede a una página de búsquedas de casas y se van introduciendo datos para obtener los resultados deseados. En la extensión para Firefox se va mostrando mediante texto las acciones que se ejecutan, por ejemplo “Acceder a la pagina tal”, “Seleccionar ‘2 habitaciones'” y así con cada una de las acciones que hemos ido realizando. Estos textos son editables y después cuando se ejecuta el script para aprender el howto, se tienen en cuenta los datos cambiados.
koala2.png
La verdad es que estoy deseando que se haga pública esta extensión, a muchos nos podría ahorrar documentación para los proyectos.
Koala
Vía / CNET News.com

links for 2007-03-30

|

phpPgAdmin: administra PostgreSQL desde la web

Casi todos conocemos phpmyadmin, una aplicación web para administrar nuestras bases de datos en MySQL. En este caso se trata de phpPgAdmin, lo mismo pero para PostgreSQL. No todo el mundo trabaja con MySQL, por lo que esta herramienta le vendrá muy bien a aquellos que usen esta base de datos.
phppgadmin.png
Entre las características que ofrece nos encontramos con la posibilidad de administrar varios servidores, soporte a múltiples versiones de PostgreSQL, administración de usuarios, grupos, bases de datos, esquemas, etc…, manipulación sencilla de datos, exportar los datos a diferentes formatos, importar sentencias SQL y mucho más.
Ahora solo falta que hagan algo para Oracle para hacerme feliz.
phpPgAdmin

Truwex Online: validador de accesibilidad y calidad

Truwex ofrece una herramienta online para comprobar la accesibilidad y la calidad de un URL dada. Una de las mayores diferencias con otras aplicaciones parecidas es que valida el código HTML generado, no solo el código HTML plano, tiene en cuenta el código generado por el Javascript.
Algo que también me ha llamado mucho la atención es que ofrece la posibilidad de ver los errores detectados en la propia página, incluso cuando se trata de capas ocultas, facilitando así la localización de los errores, y por qué no, entender qué es lo que está mal hecho.
truwex.png
En la misma página nos explican los errores que detecta y cómo solucionarlos.
También es curiosa la aplicación online que comprueba el script de Google Analytics que contiene la página.
Truwex Online
Vía / 456 Barea Street