Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.
Cross Site Scripting – XSS
Ocurre cuando el usuario es capaz de inyectar javascript en la url y este es ejecutado, por ejemplo porque en alguna parte del código se está haciendo un echo.
Ejecutar javascript dentro de tu página puede servir para robar cookies, o enviar información a otro servidor.
La solución pasa por sanitizar todas las peticiones echas al navegador.Ver solución
Cross-site request forgery (CSRF)
Una vez que te has logueado en una cuenta privada (facebook, gmail banco), el hacker logra que pulses uno de sus enlaces o visualices cierta foto sin que te hayas deslogueado.
<img src=https://bank.com/transfer?amount=1000&to=1238891746” />
Solución:
- Las peticiones que hacen cambios deberían ser recogidas siempre con POST.
- Crear un token en el formulario de envío y comprobarlo en la recepción.
Inyección SQL
Dada la siguiente consulta:
$result = mysqli_query("SELECT Username, Password FROM Users WHERE Username = '".$_POST['username']."' and Password = '".$_POST['password']."'");
Si el usuario introdujese el siguiente usuario en el formulario: ‘ OR 1=1 #
La consulta que va a ser ejecutada sería esta:
SELECT Username, Password FROM Users WHERE Username = '' OR 1=1 #' and Password = ''
La almohadilla (#) le dice aMySQL que todo que le sigue es un comentario y que no debe de hacerle caso. Ejecutará SQL hasta ese punto. Después 1 es igual a 1, SQL devolverá todos los usuarios y contraseñas de la base de datos. Y como la primera combinación del usuario y de contraseña en la mayoría de las bases de datos es la de el administrador… tendremos un problema.
Solución al problema:
- Limitar los privilegios del usuario de la base de datos (que no pueda borrar tablas, etc.)
- Sanitizar la instrucción SQL. → $parametro = addslashes(trim($parametro));
- Prepared statements (ver código php).
Ataques desde formularios de otros servidores
function request_is_same_domain(){
if(!isset()){
return false;
}else{
$referer_host = parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST);
$server_host = $_SERVER['HTTP_HOST'];
}
return ($referer_host == $server_host)?true:false;
}