Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Aumento de seguridad - ¿consejos?

Estas en el tema de Aumento de seguridad - ¿consejos? en el foro de PHP en Foros del Web. Hola gente, este es mi primer tema. Les comento estoy arrancando con lo que es desarrollo web, y lo poco y casi nada que se ...
  #1 (permalink)  
Antiguo 04/12/2014, 18:40
Avatar de diego225587  
Fecha de Ingreso: diciembre-2014
Ubicación: Venado Tuerto
Mensajes: 3
Antigüedad: 9 años, 4 meses
Puntos: 0
Exclamación Aumento de seguridad - ¿consejos?

Hola gente, este es mi primer tema. Les comento estoy arrancando con lo que es desarrollo web, y lo poco y casi nada que se lo voy a prendiendo de internet así que espero no les enfade ver mi código... Lo publico por que les quiero pedir la opinión a gente que sabe más y que tiene más experiencia en el tema.

Hice un login y algo me dice que el código escrito es muy muy inseguro, y quisiera saber que tendría que agregarle o que funciones aprender para poder mejorarlo.

Desde ya gracias.. código a continuación:

Código PHP:
<?php
    $conexion 
mysql_connect("localhost""root""******") or die("Problemas al conectar base de datos: ".mysql_error()); 

    
mysql_select_db("baseuno"$conexion) or die("Problemas al seleccionar base de datos: ".mysql_error()); 

    
$usuario $_REQUEST['userAdmin']; 
    
$pass $_REQUEST['passAdmin']; 
    
$privado $_REQUEST['privadoAdmin']; 

    
/****************************************/
    
    
function validar($user$password$dPrivado$datosConexion){
        
$validandoUsuario mysql_query("select usuario from administracion"$datosConexion) or die("Problemas al extraer datos: ".mysql_error());
        
$validandoPass mysql_query("select pass from administracion"$datosConexion) or die("Problemas al extraer datos: ".mysql_error());
        
$validandoPrivado mysql_query("select privado from administracion"$datosConexion) or die("Problemas al extraer datos: ".mysql_error());    
        
        
$contadorBooleano 0
        
$valorBooleano false
  
//COMIENZO DE VALIDACIÓN DE DATOS: 
        
while($reg=mysql_fetch_array($validandoUsuario)){
            if (
$reg['usuario']==$user){//VALIDA EL USUARIO
                
echo "Usuario correcto.<br>";
                
$contadorBooleano++; 
                while (
$reg2=mysql_fetch_array($validandoPass)){//VALIDA EL PASS
                    
if($reg2['pass']==$password){
                        echo 
"Password Correcta.<br>";
                        
$contadorBooleano++;
                        while (
$reg3=mysql_fetch_array($validandoPrivado)){
                            if(
$reg3['privado']==$dPrivado){//VALIDA UNA ID PRIVADA
                                
echo "Dato privado correctos.<br>";
                                
$contadorBooleano++;
                                if(
$contadorBooleano==3){
                                    
$valorBooleano=true
                                    if(
$valorBooleano){
                                        
session_start();
                                        
$_SESSION['validado']= 1;  
                                        
$_SESSION['validado1'] = 2
                                        
$_SESSION['validado2'] = 3
                                    }
                                }
                                
mysql_close(); 
                                
header("location: adminDanger/index.php");
                            }else{
                                echo 
"Datos incorrectos.";
                            }
                        }
                    }else{
                        echo 
"Datos incorrectos.<br>";
                    }
                }
            }else{
                echo 
"Datos incorrectos.<br>";
            }
        }
    }        
validar($usuario$pass$privado$conexion);
?>
//Y ESTE ES EL CÓDIGO CON EL QUE CHEKEO SI LA SESIÓN FUE INICIADA

Código PHP:
<?php
    session_start
();
    if(
$_SESSION['validado']==&& $_SESSION['validado1'] == && $_SESSION['validado2']== 3){
        echo 
"<p id='validacion'>estas validado</p><br>";
    } else{
        
header("location: ../index.php");
    }
?>
Gracias de antemano.. lo que busco son consejos sobre como mejorar la seguridad.. saludos!
  #2 (permalink)  
Antiguo 04/12/2014, 18:48
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Aumento de seguridad - ¿consejos?

La seguridad es el menor de los problemas al parecer: tu código está muy mal pensado.

¿De verdad necesitas hacer tres consultas a la base de datos para ir comparando tus valores de acceso?

Vamos, imagina que tienes 10,000 registros ¿de verdad tienes planeado iterar casi 30,000 veces sólo para verificar un registro?

¿No es más fácil hacer dicha comparación directamente desde la consulta?

Cita:
SELECT * FROM table WHERE x = 'a' AND y = 'b' AND z = 'c'
Donde claro, xyz/abc son respectivos a los valores que busques.

Tu no tienes problemas de código PHP en realidad, tienes problemas de diseño de software en general.

Como dice el dicho "primero resuelve el problema, luego escribe el código" parece ser que jamás piensas bien tus soluciones antes de programar ¿cierto?

¿Aumento de seguridad?

No hace falta.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 04/12/2014, 19:01
Avatar de diego225587  
Fecha de Ingreso: diciembre-2014
Ubicación: Venado Tuerto
Mensajes: 3
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Aumento de seguridad - ¿consejos?

Gracias por la respuesta..

bien, prestare más atención a no hacer tanto embrollo..

Saludos!
  #4 (permalink)  
Antiguo 05/12/2014, 06:35
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 5 meses
Puntos: 175
Respuesta: Aumento de seguridad - ¿consejos?

Lo que te dice el amigo es cierto...

no porque vaya pasando por varias instancias o estructuras IF será más seguro.

Habrá casos que necesariamente necesitas un mejor control para saber donde está un posible problema, pero no es la generalidad.

Te aconsejo que utilices PDO o Mysqli para desarrollar tus aplicaciones, ya que la librería MYSQL esta deprecated. Con las anteriores es muy complicado que sufras una Inyeccion SQL, por ejemplo, ya que usa los Statments para ese efecto.

Ahora bien, te podríamos preguntar a que te refieres con AUMENTO DE SEGURIDAD? o sea, a que le tienes miedo?
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #5 (permalink)  
Antiguo 05/12/2014, 17:44
Avatar de diego225587  
Fecha de Ingreso: diciembre-2014
Ubicación: Venado Tuerto
Mensajes: 3
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Aumento de seguridad - ¿consejos?

Hola, gracias por comentar..

Este es el primer proyecto que hago, y me puse a hacer todo ese embrollo por que había leído en internet que si por ejemplo ponen el siguiente código:

Cita:
'O 1=1 #
en por ejemplo, el input de usuario, ese código devolvería los usuarios y contraseñas.. eso si ponía todo en una sola consulta, entonces por eso hice 3 consultas y esas condicionales...

y el login que valida ese código vendría a hacer el de el panel de administración del sitio.. entonces me persegui por temor a que alguien pueda acceder al panel.. ahora q lo pienso "me preocupe de más tal vez?"

Gracias por las recomendaciones, voy a implementarlas... y espero se haya entendido el por que pedía consejos de seguridad..

Saludos!

Etiquetas: conexion, conexion-a-servidor, consejos, seguridad
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:53.