Seguridad para las url del tipo pagina.php?id=

Buenas!

Posteé ayer un tutorial sobre cómo hacer páginas del tipo pagina.php?id= (Desarrollado por varios usuarios)

Para añadir seguridad, pusimos para que si ponen de id el número 0, o un número negativo (cosas que podían hacer los crackers para averiguar cosas del sistema)
Ahora estamos buscando para que si ponen un id que no existe (si el máximo es 2, si ponen 9 que les salte un error, o los rediriga al inicio)

Pero bueno, eso no es lo que quería preguntar en este tema

Por lo que he visto, para robar cookies, usan ataques XSS que se pueden hacer por medio de la url.

Pues por lo que veo estas páginas son vulnerables a eso, porque si en el id pones esto:
http://pagina.com/novedad.php?id=%3Ciframe%20src=%22URL MALIGNA%22%3E

Donde pone URL MALIGNA un cracker pondría una página suya propia, en la que si entras te roba la cookie (él te mandaría ese link camuflado, tú lo abrirías, y zas!)

También si pones en el id <h1>XSS</h1> (Por ejemplo) te saldría la palabra XSS en grande (es decir, vulnerable a XSS)

Sería buen tema explicar cómo hacer que no se puedan poner etiquetas html en la url

Saludos!
bueno si seria bueno explicarlo, pero es imposible evitar que un usuario mal intencionado ponga codigos en la url, lo que puedes hacer es evitar que dichas variables lleguen al script php, haciendolas pasar por un buen filtro que les quite todo el html, javascript.
y digo yo chicos; porque que no utilizais un programa PGP; o si usais la biblioteca query os gustará jQuery.jQencoder; encriptais los datos y listo. se solventa el asunto de las XSS.
lantiga, no tenías que haber dicho nada... ahora mi curiosidad hará que tenga que aprender eso! jajajaja

Gracias por el consejo, si alguien se anima a explicarlo mejor que mejor, mientras tanto, Google jejeje
Me olvidé de ponerlo aquí pero ya encontré una solución para que no pongan etiquetas HTML donde debería ir el ID...

En la página php en que recibes el ID, tienes que poner:

$id = strip_tags($_GET[id]);
Hmmmm creo que lo mejor seria volver tus url amigables en el .htaccess

Tambien existe otra opcion ejemplo:

Si es solo numeros en la url entonces:

$mivar = (int)$_GET['id'];
$mivar= htmlspecialchars($mivar);
$mivar = htmlspecialchars($mivar, ENT_QUOTES);

Con eso aseguras que sean solo numeros nada de html ni quotes un metodo muy seguro

Saludos
Es facil programar "Solo interesate en aprender"
Gracias césar, no sabía eso de usar el int en PHP

He leído algo de Magic quotes, podrías explicarmelo? gracias!