Categories
.NET ASP.NET PHP Seguridad XSS

Problema con los filtros genéricos

Hoy, acabo de encontrar en un foro la siguiente porción de código, que según su autor protege de ataques SQL Injection y XSS:

php:

# Función para evitar ataques SQL injection y XSS
function limpiar_sql($value){
    $value = trim(htmlentities($value)); // Evita introducción código HTML
    if (get_magic_quotes_gpc()) $value = stripslashes($value);
    $value = mysql_real_escape_string($value);
    return $value;
}

El problema con este tipo de funciones es que dan una falsa sensación de seguridad si éstas no son aplicadas en el lugar correcto, por ejemplo si intentamos usar esa función para el siguiente ejemplo:

php:

$url = limpiar_sql($_POST['url']);
// Guardar el valor...

// Mostrar la url
echo '<a href="' . $url . '">enlace</a>";

Veremos que la porción de código mostrada es vulnerable a XSS si el valor de url contiene algo como javascript:alert(document.cookie).

Si recordamos una entrada anterior, el bug en asp.net que permite realizar ataques XSS tiene un problema similar (uso de HttpUtility.HtmlEncode en lugar de HttpUtility.UrlEncode).

Como reflexión final, si queremos hacer uso de este tipo de funciones para validar/filtrar todos nuestros datos, debemos saber realmente que estamos haciendo.

Categories
.NET ASP.NET Seguridad XSS

Cross Site Scripting (XSS) en ASP.NET

En una entrada anterior había prometido comentar un pequeño bug presente en asp.net 2 -y probablemente versiones anteriores.

Categories
.NET ASP.NET Seguridad XSS

Seguridad en ASP.NET (XSS)

Al empezar a escribir, iba a comentar un "bug" presente en ASP.NET 2.0, pero para no hacer tan larga -y aburrida- esta entrada, lo haré en dos partes

ASP.NET, provee por defecto una limitada protección contra ataques XSS a través del atributo ValidateRequest, que se puede definir tanto a nivel de página como a nivel de la aplicación.

Categories
CSS Quiz Seguridad XSS

Validación de datos – Solución

Continuando con la serie, ¿qué cosas se tienen que cumplir para que el siguiente código sea vulnerable a XSS?

php:

<?php
/* Evitar XSS a través de otros formatos */
header('Content-type: text/html; charset=utf-8;');

$color = '000';
if ( !empty($_GET['color']) ) {
        $color = htmlentities(strip_tags($_GET['color']));
}

?>
<html>

<head>
        <title>Anti XSS Page :D</title>
        <style type="text/css">
        #demo {
                width: 100%;
                height: 50px;
                background: #<?php echo $color;  ?>;
        }
        </style>
</head>

<body>

<div id="demo">

</div>

</body>

</html>

Categories
PHP Quiz Seguridad XSS

Cuando los filtros no hacen lo que deberían

El código que se muestra a continuación, es un ejemplo simplificado del comportamiento que ofrece en una de sus secciones, un -importante- diario español.