Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programacion Segura PDF
Programacion Segura PDF
(SSI)
Programacin Segura
17/04/08
Bibliografa especfica
17/04/08
Solucin
17/04/08
A2 Injection Flaws
(particularly SQL injection)
Exploits of a Mum
http://xkcd.com/327/
17/04/08
Inyeccin SQL
Navegador web
Login: carlos
Password: *************
Servidor de aplicaciones
SELECT user_id FROM Students
WHERE user_name = 'carlos' and
user_password = 'mi-pw-secreto';
Base de datos
17/04/08
Inyeccin SQL
Navegador web
Login: Robert'); DROP TABLE Students; -Password: ****
Servidor de aplicaciones
SELECT user_id FROM Students
WHERE user_name = 'Robert'); DROP TABLE Students; --' and
user_password = 'aaaa';
Base de datos
17/04/08
17/04/08
Soluciones
17/04/08
include $_REQUEST['filename];
datos en ficheros de sesin, registros, imgenes subidas...
usar flujos como zlib:// ogg:// que ignoran
allow_url_fopen allow_url_include
fichero, directorio
registro de una base de datos
Ejemplos:
require_once ($_REQUEST['language]."lang.php");
17/04/08
10
Soluciones para
Insecure Direct Object Reference
Verificar la autorizacin
int cartID = Integer.parseInt( request.getParameter( "cartID" ) );
User user = (User)request.getSession().getAttribute( "user" );
String query = "SELECT * FROM table WHERE cartID=" + cartID + " AND
userID=" + user.getID();
17/04/08
11
Ejemplo
<img src="http://bank.com/transfer.do?acct=MARIA&amount=100000" width="1"
height="1" border="0">
17/04/08
12
S funciona
17/04/08
13
A6 Information Leakage
and Improper Error Handling
La aplicaciones filtran informacin sensible
Ejemplos:
mensajes de error
An Error Has Occurred.
Error Message: System.Data.OleDb.OleDbException: Syntax error (missing operator)
in query expression 'username = ''' and password = 'g''. at ...
17/04/08
14
17/04/08
15
Soluciones
usar SSL exclusivamente para todo acceso autenticado (A9)
encriptar todas las credenciales y tokens para almacenarlos (A8)
planificacin cuidadosa
17/04/08
16
17/04/08
no encriptarlos
utilizar algoritmos criptogrficos propios
usar incorrectamente algoritmos fuertes
continuar usando algoritmos dbiles (MD5, SHA-1, RC3, RC4...)
usar claves preprogramadas o almacenarlas desprotegidas
17
Soluciones para A8
17/04/08
18
A9 Insecure Communications
Soluciones
17/04/08
19
Soluciones
17/04/08
20