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
Google PHP Recursos Seguridad

Stupid Google tricks

El título, es el nombre del tema que expuso Jose Nazario en UMEET 2006, trata sobre el uso de Google Code Search para encontrar las vulnerabilidades -típicas- en el código de aplicaciones que hayan sido indexadas por este buscador.

Pueden ver su presentación o las diapositivas en:

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

Cuando los filtros no hacen lo que deberían – Parte 2

La siguiente función era utilizada para validar los datos en una aplicación web -es una versión modificada del método que trae ezSQL

php:

function escape($text) {
        return mysql_real_escape_string(stripslashes(strip_tags($text)), $this->connection);
}

Se usaba de la siguiente manera:

php:

// agregar.php
<?php

if (!empty($_POST['url']) && !empty($_POST['title'])) {
        $sql = "INSERT IGNORE INTO links (url, title) VALUES ('%s', '%s')"; // ignorar los links repetidos
        $db->query(sprintf($sql, $db->escape($_POST['url']), $db->escape($_POST['title'])));
}

?>

php:

// listar.php
<html>

<head>
        <title>Demo</title>
</head>

<body>

<?php $links = $db->get_results('SELECT url, title FROM links'); ?>

<ul>
<?php foreach ($links as $link) : ?>
        <li><a href="<?php echo $db->escape($link->url); ?>">
                <?php echo $db->escape($link->title); ?></a></li>              
<?php endforeach; ?>
</ul>

</body>

</html>

¿Pueden identificar donde está el error?

Nota: la respuesta al quiz sobre validación de datos, todavía queda pendiente a pedido de Victor.