Anda di halaman 1dari 21

c 

„ Tema 6: Seguridad
"
   


Ú roducció
 ariables globales
3 ombres de ficheros
4 Subida de ficheros
5 iblioecas
6 ormularios
  

„ ?rimera recomedació:
± Dispoer siempre de versioes acualizadas de Apache y ? ?
„ Aspecos de ? ? que puede dar lugar a vulerabilidades:
± ariables globales
± ombres de ficheros
± Subida de ficheros
± iblioecas
± Daos eviados desde formularios
’




„ cuado register_globals es acivado e el fichero php ii,


? ? crea auom icamee variables globales a parir de los
daos de los formularios y de las cookies
„ ºso puede dar lugar a problemas como e el ejemplo
siguiee:

ÿ 


 

  


’




„ ma llamada a ese script de la forma






 
permiiría obeer privilegios de superusuario
„ ?ara resolver ese problema exise res solucioes:
± Deshabiliar register_globals e el fichero php ii
± icializar las variables
± ºsablecer el orde de las variables e ? ?
’




„ Deshabiliar register_globals e el fichero php ii


± La direciva register_globals del fichero php ii esablece si se
admie o o la creació auom ica de variables globales
± A parir de ? ? 4 
el valor por defeco de esa direciva es off,
que es el valor recomedable
’




„ icializar las variables


± ºl problema aerior se solucioa dado u valor iicial a la
variable $superuser:

ÿ 

  


 

  


’




„ icializar las variables


± ºs recomedable iicializar odas las variables aes de usarlas
Se puede usar la direciva error_reporting=º ALL e php ii para
que se muesre u aviso cuado se use ua variable que o haya
sido previamee iicializada
± º u eoro de producció debe eviarse la aparició de
mesajes de aviso o error ?ara ello se uiliza las siguiees
direcivas e php ii:
Y
  
  
   

  
± Los errores ir  al fichero especificado e lugar de mosrarse e la
paalla
’




„ ºsablecer el orde de las variables e ? ?


± ? ? crea auom icamee variables globales a parir del eoro
(º, las cookies (c, la iformació del servidor (S y los
par meros GºT (G y ?ST (?
± La direciva variables_order corola el orde de esas variables ºl
valor por defeco es ³ºG?cS´
± ?ermiir la creació de variables globales desde par meros GºT y
?ST y desde cookies es poecialmee peligroso m posible
valor para variables_order que evia eso es ³ºS´
± º al caso para acceder a los par meros de los formularios y a
las cookies se debe uilizar los arrays globales $ ºmºST,
$ GºT, $ ?ST y $ cºS
’




„ ºsablecer el orde de las variables e ? ?


± Si se modifica las direcivas register_globals y/o variables_order
es preciso revisar los scripts exisees para adaparlos a las
uevas circusacias
± ma forma puede ser la siguiee:

 YY!"#$"%&'( YY 

î 

„ ºs relaivamee f cil cosruir u ombre de fichero que se


refiera a algo disio a lo que se preede
„ Sea el siguiee código:

 Y )      Y    *

„ ºse código preede mosrar u mesaje de bieveida


persoalizado para el usuario Apareemee o es peligroso,
pero ¿qué ocurriría si el usuario iroduce como ombre la
cadea ³ / / / /ec/passwd´?
± Se mosraría el fichero de passwords del sisema
î 

„ Adem s hay que eer e cuea que las fucioes de maejo


de ficheros como iclude( o require( admie ombres de
ficheros remotos, lo que podría provocar la ejecució de
código maligo cargado de oro servidor Sea, por ejemplo, el
código
 Y Y )  

*
„ Si u aacae modifica el valor de la variable $libdir a,
pogamos por caso, ³hp://aacae/´, y coloca e la raíz del
mismo u fichero de ombre coeca php, su código sería
ejecuado
„ Se puede desacivar la fucioalidad de acceso a ficheros
remoos co la siguiee direciva e php ii:
+ 

î 

„ ?ara chequear ombres de ficheros se uiliza las fucioes


realpath( y basename( La primera coviere direccioes
relaivas e absoluas y la seguda oma ua rua y devuelve la
pare correspodiee al ombre del fichero ºjemplo:

 ,%&'(   
 -   
 
 -. 
Y )      /Y*
 Y )      Y  *
î 

„ ra defesa cora los ombres de ficheros icorrecos es la


direciva de php ii ope basedir:


 Y    

„ ? ? limiar las operacioes sobre ficheros al direcorio


especificado y sus subdirecorios:

 Y )    * 


Y
 Y )    * Y 



„ La subida de ficheros permie a u usuario eviar cualquier


fichero al servidor, lo cual ecierra u gra peligro ya que u
aacae puede subir u código maligo y luego ejecuarlo,
causado m s daño que cuado se icluye el código desde u
servidor remoo
„ como recomedació geeral, debe eviarse uilizar el ombre
eviado por el avegador (podría ser, por ejemplo,
/ec/passwd ºs coveiee geerar u ombre úico para el
fichero subido



„ ro peligro es el amaño de los ficheros Auque se limie el


amaño m ximo e el formulario, los ficheros se recibe
auom icamee y luego se comprueba su amaño
„ ºs posible que u usuario iee provocar u aaque de
deegació de servicio eviado varios ficheros de gra
amaño a la vez y lleado el sisema de ficheros uilizado por
? ? para almacearlos
„ ?ara eviar eso se puede uilizar la direciva post_max_size de
php ii ºl valor por defeco suele ser m s elevado de lo
ecesario



„ Sea ahora el siguiee código:

  0   1  0  


  
 Y ) *

„ ºso eviaría la iclusió de u fichero remoo auque el


aacae corolase la variable $file
„ Si embargo, el aacae podría crear su propio formulario
usado el ombre file para el campo de ipo fichero y al eviarlo
colocaría e el servidor u fichero cuyo código sería ejecuado
a


„ ºs coveiee almacear los ficheros de biblioeca fuera de la


raíz de la web para eviar que pueda ser accedidos por su
mL
„ º al caso debe hacerse saber a ? ? la ubicació de los
ficheros idicado la rua complea e los iclude( y require( o
bie mediae la direciva include_path e php ii

 Y 
)2  

2    

„ ºso es paricularmee imporae cuado e el código de la


biblioeca aparece passwords, como es el caso de las
fucioes de coexió co bases de daos
x 


„ ºs recomedable validar odos los daos proveiees de


formularios para asegurarse de que los valores recibidos so
los esperados
„ º geeral, cualquier iformació proveiee del exerior debe
coemplarse como posiblemee coamiada y debe ser
verificada aes de ser uilizada
„ Sea el siguiee ejemplo:


)3  2)  

)4  2)  
x 


„ Si el auor del comeario irodujo algú código TML e el


exo del mismo, el código ser ierpreado y sus efecos
podría ser graves
„ ?ara eviar eso se puede uilizar la fució htmlspecialchars(,
que impide que se ierpree los caraceres especiales de
TML (<, >, &
„ ºl código quedaría de la siguiee maera:


)3  2)  

)4  2) 
   
G 

„ De odo lo aerior podemos cocluir las dos recomedacioes


siguiees:
± cofigurar adecuadamee ? ? a ravés del fichero php ii
± Seguir uas bueas pr cicas e la programació
„ ay que eer e cuea que cualquier cambio e la
cofiguració de ? ? afecar a los scripts de odos los
usuarios y posiblemee a alguas herramieas, lo cual debe
ser eido e cuea y esudiarse sus cosecuecias aes de
proceder a realizarlos