Cuando los filtros no hacen lo que deberían - Parte 2
Por: alex | 4 Diciembre 2006 | Ver comentarios |
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
function escape($text) {
return mysql_real_escape_string(stripslashes(strip_tags($text)), $this->connection);
}Se usaba de la siguiente manera:
// 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'])));
}
?> // 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.


Victor
12 de Diciembre de 2006, 12:43:28 pm
Pues parece que nadie se animó a buscar el error.
Alquiler-malaga.com
14 de Septiembre de 2007, 04:46:09 pm
El fallo quizas este en listar.php ya que creo que puede ser vulnerable a ataques XSS. En concreto en el href.