seguridad de sesiones en php

Iniciado por c0nej0, 30 Diciembre 2006, 19:12 PM

0 Miembros y 1 Visitante están viendo este tema.

c0nej0

Hola a todos.....qisiera porfavor  informacion sobre temas de seguridad de sesiones en PHP, osea la forma en q puedo hacer mas segura una sesion de usuario.......en una aplicacion q hic me di con la desdichada sorpresa q habia ingresado gente sin pasar el login , use el siguiente controlador de sesion pero claro no es suficiente:

<?php
session_start
();
if(
$_SESSION['usuario']!='permitido'){
   
session_destroy();
   @
header('location:index.php');}
   
?>
   
 

ese controlador esta para las paginas a las q solo los usuarios puedn acceder previo logeo......lo q ocurre es q la pagina q programe tenia una sección de examens y en cada pagina salia el nombre del usuario...."Bienvenido Juan Perez has iniciado....etc" , y cuando el usuario daba su examen c guardaban sus nombres, contraseña, nota, fecha....pero habia registros d notas sin nombres ni contraseñas, solo la nota y la fecha como si lo hubiera dado un fantasma.....use el sgte script para validar la sesion:

<?php
include("conexionBD.php");
conectarse();//funcion q me concta a la BD
//***********************
$codUsu=$_POST['codigo'];
$dni=$_POST['dni'];
$nivel=$_POST['nivel'];
session_start();
$sql="select * from usuarios where clave='".$codUsu."' and dni='".$dni."' and nivel='".$nivel."'";
$rs=mysql_query($sql);
@
$row=mysql_num_rows($rs);
if(
$row==1)// es dcir q existe tal registro
$_SESSION['usuario']='permitido';

@
header('location:menu_usu.php');
$_SESSION['apellidos'] = mysql_result($rs,0,2);
$_SESSION['nombres'] = mysql_result($rs,0,3);
$_SESSION['nivel'] =$nivel;
$_SESSION['dni'] =$dni;
$_SESSION['codUsu'] =$codUsu;

$_SESSION['hora']=date('H:i');

}
else { 
session_destroy();

@
header('location:loginUsu.php');
}

?>



por favor q otras herramientas puedo usar para q la sesion sea segura y no vulnerable

Les agradeceria mucho su ayuda

Hans el Topo

por de pronto evitar la inyección sql tan gorda que te pueden hacer ya que recibir por POST no copruebas los datos.
Create una funcioncita o pasale los magic_quotes para comprobar los datos que te llegan


con poner % o * mismamente te la meten doblada
 

c0nej0

hmm suena interesante.....pero algun ejemplo ^^' ...osea pueden vulnerarme poniendo  % o * en los campos....como.?.al principio , al final........gracias x la respuesta...

Hans el Topo


veamos...xD

si envian los campos con valores...

$codUsu=%%
$dni=%%
$nivel=%%

o algun campo del que solo sepan que existe un dato sin saber el resto y haciendo combinaciones podría salir...

no le dedico más tiempo pero seguro que la comilla final se podría manipular para añadir un limit 1 al campo nivel xD

como adivinar los campos y demás?
enviando consultas erroneas y mirar si lanza algun error xD