Ver Mensaje Individual
  #3 (permalink)  
Antiguo 25/05/2007, 17:52
Avatar de cplus
cplus
 
Fecha de Ingreso: abril-2007
Mensajes: 164
Antigüedad: 17 años
Puntos: 1
Re: Trabajar con sesiones en PHP, a partir de una autentificación

esa ejemplo esta muy bien, es del compañero y sabio Cluster, cuanto tiempo hace que no charlo con el...

como ven tiene un pequeño bug de seguridad, INJECTION

ahora como una solucion rapida se puede aplicar estas funciones dentro del script, para comprobar el GET y el POST

se llaman asi: y se ponen al principio de nuestro script si es piramidal, si no es piramidal, tendras que incluir en cada fichero estas 2 lineas.
Código PHP:
    FUNC_Motor_Search_Injection_Value_Get_v2();
    
FUNC_Motor_Search_Injection_Value_Post_v2(); 
y estas funciones son las que tienes que meter en tu script:
Código PHP:
/********************************************************************************/
/********************************************************************************/
/********************************************************************************
FUNC_Motor_Search_Injection_Value_Post_v2 & FUNC_Motor_Search_Injection_Value_Get_v2

    Atencion no borrar ni desactivar estas dos funciones, son vitales para la
seguridad del script.

    Las funciones buscan cadenas de texto tanto en mayusculas como en minusculas,
las variables son las transportadas por el GET ´url´, o mediante POST ´formularios´,
y asuvez recogidas por estas dos funciones.

    ´Inyección de SQL´

    Muchos desarrolladores web no son conscientes de cómo pueden manipularse las
consultas SQL, y asumen que una consulta SQL es un comando confiable. Esto representa
que las consultas SQL pueden burlar los controles de acceso, y de este modo evitar
los chequeos estándares de autenticación y autorización, y a veces las consultas
SQL pueden incluso permitir acceso a comandos al nivel del sistema operativo de
la máquina huésped.

    La Inyección Directa de Comandos SQL es una técnica en la cual un atacante
crea o altera comandos SQL existentes para exponer datos escondidos, o sobrescribir
datos críticos, o incluso ejecutar comandos del sistema peligrosos en la máquina
en donde se encuentra la base de datos. Esto se consigue cuando la aplicación
toma información de entrada del usuario y la combina con parámetros estáticos
para construir una consulta SQL.

    Debido a la falta de validación de la información de entrada y el establecimiento
de conexiones con la base de datos desde un super-usuario o aquel que puede crear
usuarios, el atacante podría crear un super-usuario en su base de datos.
*/

function FUNC_Motor_Search_Injection_Value_Post_v2(){
    foreach(
$_POST as $varSearchInjectionValuePost => $varSearchInjectionPost){
        if (
eregi('insert'$varSearchInjectionPost) || eregi('*'$varSearchInjectionPost) || eregi('and'$varSearchInjectionPost) || eregi('by'$varSearchInjectionPost) || eregi('from'$varSearchInjectionPost) || eregi('select'$varSearchInjectionPost) || eregi('sql'$varSearchInjectionPost) || eregi('update'$varSearchInjectionPost) || eregi('delete'$varSearchInjectionPost) || eregi('drop'$varSearchInjectionPost )){
               echo 
"ERROR DE SEGURIDAD: INTENTO DE INJECTION";
          exit;
        }
    }
}
function 
FUNC_Motor_Search_Injection_Value_Get_v2(){
    foreach(
$_GET as $varSearchInjectionValueGet => $varSearchInjectionGet){
        if (
eregi('insert'$varSearchInjectionGet) || eregi('and'$varSearchInjectionGet) || eregi('by'$varSearchInjectionGet) || eregi('from'$varSearchInjectionGet) || eregi('select'$varSearchInjectionGet) || eregi('sql'$varSearchInjectionGet) || eregi('into'$varSearchInjectionGet) || eregi('update'$varSearchInjectionGet) || eregi('delete'$varSearchInjectionGet) || eregi('drop'$varSearchInjectionGet )){
            echo 
"ERROR DE SEGURIDAD: INTENTO DE INJECTION";
            exit;
        }
    }

quizas sea mejorable... pero yo ya hace tiempo que no uso esa funcion, pero si recuerdo que fue el primer script que vi hace ya casi 4 años...

salu2