Foros del Web » Programando para Internet » PHP »

Es Correcto ?

Estas en el tema de Es Correcto ? en el foro de PHP en Foros del Web. Vereis, a la hora de autentificar a un usuario, yo hago lo siguiente: if (isset($usuario)){ $sentencia=mysql_query("select * from tusuarios where usuario=' ".$usuario."' , contra=' ".$contra." ...
  #1 (permalink)  
Antiguo 11/06/2003, 05:11
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 10 meses
Puntos: 7
Es Correcto ?

Vereis, a la hora de autentificar a un usuario, yo hago lo siguiente:

if (isset($usuario)){
$sentencia=mysql_query("select * from tusuarios where usuario=' ".$usuario."' , contra=' ".$contra." ' ", $cn);

y bueno, todo el royo, si llega al final, denegado, sino, pues puede entrar, y si en esta pagina no recibe ninguna varibale con nombre $usuario, entonces crea el formulario, todo esto me lo hace muy bien, osea, excelente, pero yo he visto ejemplos en los que todo el mundo pone:

if(!isset($PHP_AUTH_USER)){

y en la sentencia where campousuario='$PHP_AUTH_USER' y campo contra, bueno, el otro el PW

Eso que quiere decir? y si quiere decir lo que yo creo que quiere decir, ¿Como sabe el navegador que $PHP_AUTH_USER corresponde con el nombre de la caja de texto del html de usuario?.

Espero haberme explicado. Muchas Gracias.
__________________
Charlie.

Última edición por chcma; 11/06/2003 a las 07:31
  #2 (permalink)  
Antiguo 11/06/2003, 10:33
Avatar de kco
kco
 
Fecha de Ingreso: septiembre-2001
Mensajes: 249
Antigüedad: 22 años, 6 meses
Puntos: 0
weeenas chcma :

Yo hago la autentificacion muy parecida a como la haces tu y nunca he tenido problemas (por ahora). esta ok.

Si no tienes el php instalado como modulo apache olvidate de la variable $PHP_AUTH_USER, no te va a funcionar (estoy casi seguro)

Un saludo de un PHPero+
kco
  #3 (permalink)  
Antiguo 11/06/2003, 10:53
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 22 años, 5 meses
Puntos: 69
Se puede decir que estaria bien el Query, siempre y cuando antes de ejecutarlo, escapes los caracteres especiales, para que tu aplicacion no sea vulnerable a los SQL Injections. Sino, facilmente podria borrarte toda la tabla de usuarios.

Saludos.
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com
  #4 (permalink)  
Antiguo 11/06/2003, 13:04
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 10 meses
Puntos: 7
¿Como que libere antes los espacios para que no sea vulnerable a los SQL injections? ¿Qué significa eso? :-|
__________________
Charlie.
  #5 (permalink)  
Antiguo 11/06/2003, 13:44
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
Hola,

PHP_AUTH_USER solo esta disponible si haces autentificacion por HTTP y solo funciona con PHP como modulo de Apache. La autentificacion por HTTP es la misma que puedes hacer con el .htaccess de Apache. Es cuando te sale ese cuadro de dialogo gris pidiendote un usuario y una contraseña.

SQL injections es cuando alguien escribe en el campo de usuario o de contraseña una cadena que puede "saltar" la comprobacion de tu consulta. Por ejemplo, si yo en usuario meto:

' OR '1'='1

en tu codigo al sustituir la variable por su valor la consulta que se ejecutaria seria

select * from tusuarios where usuario=' ' OR '1'='1' , contra=...

que no es la consulta que querias ejecutar.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #6 (permalink)  
Antiguo 11/06/2003, 13:51
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 10 meses
Puntos: 7
Y para que me salga la tipica pantalla gris pidiendo usuario y to eso, ¿Como puedo hacerlo?, o en su defecto, ¿Como puedo hacer lo de .htacess?
__________________
Charlie.
  #7 (permalink)  
Antiguo 11/06/2003, 14:17
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
Lo del .htacces es tema de Apache. Mira en su manual.

Y para hacerlo en PHP, tambien en el propio manual http://www.php.net/manual/en/features.http-auth.php

Saludos.

PD: Hay que ver cuanta informacion hay en los manuales.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #8 (permalink)  
Antiguo 12/06/2003, 19:22
 
Fecha de Ingreso: marzo-2003
Mensajes: 277
Antigüedad: 21 años, 1 mes
Puntos: 0
Cita:
Mensaje Original por josemi
Hola,

PHP_AUTH_USER solo esta disponible si haces autentificacion por HTTP y solo funciona con PHP como modulo de Apache. La autentificacion por HTTP es la misma que puedes hacer con el .htaccess de Apache. Es cuando te sale ese cuadro de dialogo gris pidiendote un usuario y una contraseña.

SQL injections es cuando alguien escribe en el campo de usuario o de contraseña una cadena que puede "saltar" la comprobacion de tu consulta. Por ejemplo, si yo en usuario meto:

' OR '1'='1

en tu codigo al sustituir la variable por su valor la consulta que se ejecutaria seria

select * from tusuarios where usuario=' ' OR '1'='1' , contra=...

que no es la consulta que querias ejecutar.

Saludos.
perdona que me salga del tema pero parece bastante importante saber como puedo evitar eso

buscando el caracter ' dentro de la variable que envia el usuario
y modificarla con eso bastaria ???? o algun caracter mas???

salu2
  #9 (permalink)  
Antiguo 12/06/2003, 20:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
kech

Podrías iniciar un nuevo tema .. pero bueno .. para que empieces dos consejos:

1) Usar comillas simples cuando hagas referencias a variables de PHP:

No correcto o posible "SQL inyectión" ...
SELECT * FROM tabla WHERE campo=$algo

Usar:
SELECT * FROM tabla WHERE campo='$algo'

2) Y a la opción 1) usar:
$algo = mysql_escape_string( $algo );
antes de hacer tu query (consulta) ...

Por lo demas .. mysql_query() sólo ejecuta una sentencia SQL por línea .. así que un "SQL inyectión" típo :

algo"; DROP DATABASE mysql
(o cualquier instrucción SQL despues de ; .. no se ejecutaría ..)

Otro detalle .. la directiva magic_quote_gpc afecta a estos resultados .. Es más si está a ON (lo típico) ya se añaden los \ (caracteres de escape) a las ' (comillas simples o dobles) potencialmente peligrosas .. Pero si está a OFF .. pasaría a la sentencia SQL desde un URI o formulario (Campo) como ' y no cómo \' que es lo que hace magic_quote_gpc a ON o usando la función mysql_escape_string() e incluso addslashes() ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 12/06/2003 a las 20:27
  #10 (permalink)  
Antiguo 13/06/2003, 09:33
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
Hola,

Tambien puedes revisar lo que dice el manual http://www.php.net/manual/en/security.database.php . Y sobre la seguridad en aplicaciones web http://www.owasp.org/

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #11 (permalink)  
Antiguo 13/06/2003, 19:56
 
Fecha de Ingreso: marzo-2003
Mensajes: 277
Antigüedad: 21 años, 1 mes
Puntos: 0
Gracias por la infomacion


me voy a poner a leer de inmediato

salu2
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 09:21.