Bueno, tan pronto como expones los parámetros al usuario, el atacante sabe que serán analizados. En este caso, show.php?id=foo
podría ser utilizado para cargar un sitio llamado foo
.
En el código, podría verse así:
$site = $_GET['id'];
content_query = "SELECT content FROM sites WHERE name ='" + $site + "';";
# do some manual SQL queries
# then output the content
echo("<div id='content'>" . $content . "</div>");
Obviamente, aquí es donde el parámetro es propenso a inyección SQL , donde un atacante podría generar o eliminar fácilmente la base de datos completa.
O bien, el sitio podría tener algunos sitios "ocultos" que no están vinculados públicamente, pero que aún son accesibles. Supongamos que tiene sitios públicos con ID de 1 a 100, entonces un atacante podría adivinar que también tiene un sitio en show.php?id=101
a la que no querías enlazar.
Tenga en cuenta que en este contexto, un "idiota" es simplemente alguien que no asegura su sitio correctamente y lo haría exponer eso a través de Google —No es el nombre del vector de ataque.