Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Programaci%n Segura
1 !"#!"$
&i'liograf(a espec(fica
#"#cat#on
1 !"#!"$
A2 1 3nject#on 4$aw A5 1 6a$#c#ou 4#$e 7+ecut#on A8 1 3n ecure '#rect O-ject 9e"erence A: 1 Cro S#te 9e;ue t 4or*er< /CS940 #on 6ana*e%ent A= 1 3n"or%at#on Leaka*e and 3%proper 7rror >and$#n* A7 1 ?roken Authent#cat#on and Se A@ 1 3n ecure Cr<pto*raph#c Stora*e AA 1 3n ecure Co%%un#cat#on A10 1 4a#$ure to 9e tr#ct B9L Acce
1 !"#!"$ Carlos Prez, Dpto. de Informtica, ETSE, UVEG
&
>T6L *enerado por e$ c$#ente e ejecutado por e$ nave*ador wereflejado: enlaces en correos, pginas web... almacenado: correo web, foros, blogs... inyeccin a travs de DOM: manipulando document. !", document.location...#
So$uc#Cn
validar y$o codificar todos los parmetros antes de incluirlos en pginas %&M" validar usando principalmente 'listas blancas( evitar errores de canonicali)acin
1 !"#!"$
1 !"#!"$
'
In ecci%n S67
)a*e+ador ,eLogin: carlos Password: *************
Ser*idor de aplicaciones
SELECT user_id FROM Students WHERE user_name !carlos! and user_"assword !mi#"w#secreto!$
.ase de datos
1 !"#!"$ Carlos Prez, Dpto. de Informtica, ETSE, UVEG
In ecci%n S67
)a*e+ador ,eLogin: Ro%ert!&$ 'ROP T()LE Students$ ## Password: ****
Ser*idor de aplicaciones
SELECT user_id FROM Students WHERE user_name !Ro%ert!&$ 'ROP T()LE Students$ ##! and user_"assword !aaaa!$
.ase de datos
1 !"#!"$ Carlos Prez, Dpto. de Informtica, ETSE, UVEG
Do con"#ar en $a va$#dac#Cn rea$#Eada por e$ c$#ente Dor%a$#Ear $o va$ore de entrada Ap$#car va$#dac#Cn en e$ erv#dor 9e tr#n*#r $o t#po de dato aceptado Cod#"#car < va$#dar $a a$#da ;ue e *enera B ar pre"erente%ente F$# ta -$anca G Tratar de "or%a e*ura $o errore Ap$#car e$ pr#nc#p#o de$ %enor pr#v#$e*#o
1 !"#!"$
So$uc#one
usar referencias indirectas diferenciar datos validados de los del usuario validar la entrada usando 'listas blancas( filtrar los intentos de acceso remoto desde el servidor web usar mecanismos de aislamiento: c*root, jail, m+uinas virtuales... usar mecanismos del lenguaje: tainting, allow,url,fopen...
Carlos Prez, Dpto. de Informtica, ETSE, UVEG
1 !"#!"$
7je%p$o :
3select name 4language453o"tion 6alue 4.r45Fran7ais32o"tion532select5 re9uire_once :*_RE+,EST-!language/0;4lang;"<"4&$
manipulable con inyeccin del byte nulo: 4;;2;;2;;2;;2etc2"asswd=>>4 ?nteger;"arse?nt: re9uest;getParameter: 4cart?'4 & &$ 4SELECT * FROM ta%le WHERE cart?' 4 A cart?'$
1 !"#!"$
1"
7v#tar e+poner $a re"erenc#a .a$#dar toda $a re"erenc#a a o-jeto .er#"#car $a autor#Eac#Cn en todo $o acce o B ar Hnd#ce o %apa de re"erenc#a
<tt":22www;eBam"le;com2a""licationC.ile D
.er#"#car $a autor#Eac#Cn
int cart?' ,ser user ?nteger;"arse?nt: re9uest;getParameter: 4cart?'4 & &$ :,ser&re9uest;getSession:&;get(ttri%ute: 4user4 &$ String 9uer@ 4SELECT * FROM ta%le WHERE cart?' 4 A cart?' A 4 (E' user?' 4 A user;get?':&$
1 !"#!"$
11
Provocar ;ue e$ nave*ador *enere pet#c#one >TTP ocu$ta a recur o re tr#n*#do Se aprovecha $a autent#"#cac#Cn #%p$Hc#ta
autentificacin %&&. /ej: usuario y contrase0a# coo1ies autentificacin 22" del cliente autentificacin basada en -ps
7je%p$o
3img src 4<tt":22%anF;com2trans.er;doCacct M(R?(Gamount D>>>>>4 widt< 4D4 <eig<t 4D4 %order 4>45
1 !"#!"$
1%
DO "unc#ona
sar .O2& en ve) de 34& sar coo1ies secretas
SH "unc#ona
sar testigos aleatorios 5nicos en los formularios
1 !"#!"$
1&
mensajes de error
An Error ,as - .rre'/ Error 0essage1 !2stem/Data/-leDb/-leDbE3 e"tion1 !2nta3 error 4missing o"erator5 in 6.er2 e3"ression 7.sername = 777 an' "ass&or' = 7g77/ at ///
1 !"#!"$
1#
Co%pro-ar $a ap$#cac#Cn con todo t#po de dato de entrada #nvI$#do < ana$#Ear $o %en aje *enerado 7 trate*#a co%Jn para *e t#onar e+cepc#one 'e ha-#$#tar o $#%#tar $o deta$$e %o trado o-re errore /e pec#a$%ente de capa #nterna : ?'& SO)))0 Do u ar $o *e tore de error por de"ecto Karant#Ear ;ue $o ca%#no de ejecuc#Cn en #-$e devue$ven %en aje de error #dLnt#co en %I o %eno e$ %# %o t#e%po /o hacer$o a$eator#o0
1 !"#!"$
1'
1 !"#!"$
1(
en #-$e
no encriptarlos utili)ar algoritmos criptogrficos propios usar incorrectamente algoritmos fuertes continuar usando algoritmos dbiles /MD<, 2%7=>, !?@, !?A...# usar claves preprogramadas o almacenarlas desprotegidas
1 !"#!"$
Soluciones para +C
1 !"#!"$
1$
+D 1 Insecure Communications
en #-$e
1 !"#!"$
1/
So$uc#one
usar una matri) de control de acceso restringir el acceso a !"s y funciones en cada paso reali)ar pruebas de penetracin cuidado con fic*eros incluibles y librer;as no asumir +ue los usuarios desconocen ciertas !"s o 7.-s permitir acceso slo a ciertos tipos de fic*eros /ej: %&M", .DD...# mantener actuali)ados los componentes +ue manejan datos proporcionados por usuarios /imgenes, EM", te6tos...#
Carlos Prez, Dpto. de Informtica, ETSE, UVEG
1 !"#!"$
%"