Evalúa tus expresiones regulares con “The Regulator”

The Regulator, es un proyecto Open Source que permite evaluar expresiones regulares, algunas características de esta herramienta son:

  • Permite buscar, reemplazar y separar cadenas en base a una expresión regular.
  • Analizador de las expresiones regulares.
  • Buscar e importar expresiones desde regexlib.com, que es un repositorio con una gran cantidad de expresiones regulares.
  • Coloreado de sintáxis e Intellisense para las expresiones regulares.
  • Posibilidad para crear snippets, para las expresiones regulares más usadas.
  • Posibilidad de generación de código para C# y VB.NET (se puede implementar un plugin para que soporte más lenguajes)
  • ...

Analizador de expresiones regulares
Analizador de expresiones regulares

Intellisense de expresiones
Intellisense de expresiones regulares

Búsqueda de expresiones regulares
Búsqueda de expresiones regulares

En la versión original de esta herramienta no funcionan las búsquedas de expresiones regulares, esto debido a que la dirección e interfaz del servicio web brindado por regexlib.com ha cambiado.

Si desean obtener una versión -talvez inestable- con este pequeño bug corregido*, pueden hacerlo desde este sitio, pero necesitarán -a diferencia de la versión original- el .NET Framework 2

He publicado esta versión modificada, ya que según Roy Osherove -autor de esta herramienta, por el momento no puede solucionarlo por falta de tiempo.

*: en realidad es más un hack para que funcione la búsqueda, que la solución al problema descrito.

Descargas

XSS o SQL Injection

Una pregunta hecha en un foro:

hola gente

normalmente mis sitios php incluyen en el index (el cual incluye las secciones) el siguiente codigo:

php:
foreach($_REQUEST as $nombre_campo => $valor){
   $asignacion = "$" . $nombre_campo . "='" . $valor . "';";
   eval($asignacion);
}

no hace mas que capturar todo el $_REQUEST y transformarlo en variables comunes.

intentando evitar ataques via XSS o SQL injection es el unico codigo que me resta por analizar, pero no logro llegar a la conclusion de si es o no peligroso o deberia escribir todas y cada una de las variables.

ustedes que opinan?

Implicancias de la codificación del documento

En esta edición del quiz, un poco sobre la influencia que tiene la codificación de una página que se envía al cliente.

php:
<?php

$charset = 'utf-8';

/* Comprobación simple del charset: no debe contener caracteres raros  */
if ( !empty($_GET['charset']) && preg_match('/^[a-z\d-]+$/i', $_GET['charset']) )
        $charset = $_GET['charset'];
       
header('Content-type:text/html; charset=' . $charset);

?>
<html>

<head>
        <title>Test</title>     
</head>

<body>

<?php

if ( !empty($_GET['url']) )
        echo sprintf('<a href="%s">Enlace</a>', htmlentities($_GET['url']));

?>

</body>

</html>

¿Qué problema o problemas existen en el código mostrado?

Solución

Una alternativa de solución, es la que comenta Francesc, sin embargo la funcion htmlentities no acepta todos los encodings, lo que podría conllevar a que el código mostrado sea vulnerable a ataques XSS, para evitar esto, lo mejor es evitar que el usuario establezca el encoding del documento.

Microsoft Firefox 2007 professional edition

Algunas características de este navegador :-P :

  • RSS (Real Simple Sex): RSS is a relatively new algorithmic technology fueled by the continued hot desires of many online web users. Accessed by an illuminating an icon on the toolbar - a single click allows you to view and optionally download anything that resembles a tit, a boob or a breast - rendered directly in the browser with speeds up to 10 times faster than the competition. Real Simple Sex can scan and arrange explicit images/pictures in order of quality and effectively filters out irrelevant content such as balloons or soccer balls.
  • 3rd Party Opt-in: Disables nearly all pre-installed non-Microsoft software to prevent potentially vulnerable controls from being exposed to attack. You can easily enable or disable required programs as needed through the Add-on Manager by using any valid credit card.
  • Security Status Bar: Enhances awareness of website security and privacy settings by displaying color-coded notifications next to the address bar. Microsoft Firefox changes the Address Bar to green for websites bearing the Microsoft Partnership Certificate, indicating the site owner has completed extensive identity and friendship verification checks. Googling Filter notifications, certificate names, and the gold padlock icon are now also adjacent to the address bar for better visibility.
  • Googling Filter: Proactively warns and helps protect you against potential or known fraudulent sites such as Google.com, blocks the site and shuts down your computer if necessary. The filter is updated several times per hour using the latest security information from Microsoft.
  • ...

Fuente: http://juanpe.lugcix.org/?p=52

Mensajes de error

Hace instantes, visitando un sitio con artículos sobre programación, me econtré con un curioso error al intentar acceder a un elemento inexistente (id=25).

code:
No exite la página 1 de resutados. Hay solo un total de 0

Al cambiar el valor esperado por 25', me muestra lo siguiente :-D :

Ocurrió un error al ejecutar el query "SELECT COUNT(*) FROM articulos, creditos, temas, stats WHERE (articulos.fecha <= now() AND temas.id_cat = articulos.id_cat and creditos.id_autor = articulos.id_credito and articulos.clave = stats.id_nota) AND (articulos.id_cat <> 33 AND articulos.id_cat <> 34) AND articulos.id_credito = 25\' ORDER BY articulos.fecha DESC". La base dijo : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\' ORDER BY articulos.fecha DESC' at line 1.

Sin duda, es un gran descuido de la persona que hizo esto, porque muestra incluso la consulta SQL generada :-P .

Obviamente no pondré la dirección de la página afectada, mientras no hayan corregido ese pequeño error.

Office 2007 RTM

Hoy acaban de anunciar la versión final de Office 2007. Según la nota de prensa, las descargas para probar el software estarán disponibles a partir del 1° de diciembre del presente año, a través del sitio de Office Online.

Depuración de javascript con Visual Studio .NET

El presente post intenta mostrar la depuración de código javascript en Internet Explorer desde la comodidad del Visual Studio .NET, que hace fácil la tarea de depuración de scripts -inclusive aquellos que han pasado por la utilidad packer de Dean Edwards.

Seguramente no soy el único que ha tenido problemas con ciertos scripts que funcionan bien en otros navegadores, pero no con Internet Explorer. Imagino que también habrán maldecido agradecido miles de veces a los desarrolladores de este navegador, por proveer esa "maravillosa" forma de mostrar los mensajes de error que normalmente no sirve para nada.

Nice IE's error message

Retomando el tema del post, para habilitar la depuración, se tiene que desmarcar la opción "Deshabilitar la depuración de secuencias de comandos (Internet Explorer)", esta opción pueden encontrarlo en Herramientas -> Opciones de Internet -> Avanzadas; una vez hecho el cambio se debe cerrar el navegador para que los cambios hagan efecto.

Habilitar depuración de scripts en IE

A continuación, para definir un breakpoint, sólo basta escribir debugger; en el lugar donde se quiere detener la ejecución del script.

code:
foo = function () {
        debugger;
        var arr = [];

        arr['demo'] = 'foo';               
               
        m = document.getElementById('msg');
       
        alert(m.value)
}

Una vez que hayan hecho los cambios necesarios, cada vez que el navegador encuentre la sentencia debugger aparecerá algo como:

Invocar al depurador
Invocar al depurador

Visual Studio en acción
Visual Studio en acción

Propiedades de variable
Propiedades de una variable

Variables locales
Variables locales

Consola

Si no tienen instalado Visual Studio .NET, pueden hacer uso de Microsoft Script Debugger.

Sobre la liberación de “bug fixes”

Hace aproximadamente un mes, reporté un bug de una pequeña -y al parecer popular- aplicación web (software libre). Este bug permite, de manera muy sencilla, conocer algunos datos interesantes y acceder a su panel de control.

code:
// Búsqueda en google
Resultados 1 - 10 de aproximadamente 14,300 de "..."

El bug al que hago referencia, ya se corrigió en la versión de desarrollo de esa aplicación, sin embargo, según fuentes confiables :) , están esperando terminar la siguiente versión para liberar la solución al problema junto a otras monerías características que justifiquen la actualización a ésta.

Me pregunto, ¿fue difícil liberar una versión especial que solamente corrija fallos?