Anuncia aquí

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.

Esta entrada fue publicada en PHP, Quiz, Seguridad

2 Comentarios

  1. 1 Victor (12 de diciembre de 2006, 12:43:28 pm) http://www.mis-algoritmos.com

    Pues parece que nadie se animó a buscar el error.

  2. 2 Alquiler-malaga.com (14 de septiembre de 2007, 04:46:09 pm) http://alquiler-malaga.com/

    El fallo quizas este en listar.php ya que creo que puede ser vulnerable a ataques XSS. En concreto en el href.

Publicar un Comentario

Tu email nunca será publicado o compartido. Los campos requeridos están marcados con un *

*
*

Puedes usar estas etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>