Hola muchachos soy nuevo en el foro entre porque estoy haciendo un trabajo sobre seguridad en bases de datos y tengo una duda: ¿porqué cuando encuentro esto .php?= en la dirección de una pagina, se sabe que es vulnerable a inyecciones sql?, ¿qué es lo que representa o que significa esa linea y como se puede evitar mostrarla?
es cosa de aprender php
no es .php?=
es
.php?variable=valor
usualmente los novicios tienden a no filtrar sus solicitudes a la DB, así que hacen un
web.php?pagina=1
y en el código
$pagina = $_GET["pagina"]
$sql = "SELECT * FROM tabla WHERE campo='$pagina' ";
esto permite a una atacante hacer una segunda peticion alli
lo peligroso no es el ?pagina=1, es como se filtre eso una vez dentro del servidor...
por toro lado a tu pregunta, como se puede evitar, eso se arregla con "url amistosas" sin embargo el problema persiste si no se filtra la data
Deberías leer también sobre "honey pot".
Un saludo.
Lo que debes intentar no es evitar mostrar una vulnerabilidad, sino evitarla
Existen en cada lenguaje diferentes métodos, normalmente conocidos como "consultas preparadas" o "consultas parametrizadas"
Normalmente cualquier lenguaje moderno que accede a una base de datos incluye mecanismos para ello. Básicamente consiste en tener la consulta ya preparada y añadir el parámetro de búsqueda mediante una instrucción a un objeto ya existente que contiene la consulta. Si este no tiene el formato correcto, la instrucción simplemente no se ejecuta (en algunos lenguajes ello implica excepciones que hay que tratar)