Foros del Web » Programando para Internet » PHP »

Seguridad en mysql_connect()

Estas en el tema de Seguridad en mysql_connect() en el foro de PHP en Foros del Web. Hola, estuve buscando porque un usuario me comentó que lo más seguro para una conexión a base de datos es dejar la parte del código ...
  #1 (permalink)  
Antiguo 29/12/2010, 18:19
Avatar de Gambinoh  
Fecha de Ingreso: diciembre-2010
Mensajes: 348
Antigüedad: 13 años, 4 meses
Puntos: 11
Hola, estuve buscando porque un usuario me comentó que lo más seguro para una conexión a base de datos es dejar la parte del código de la conexión en una hoja a parte.

Bueno mi idea en principio es sólo esa, así que busque en google y encontré esto:

Cita:
Tambien puedes poner la conexion a la BBDD en un archivo fuera del root y llamarlo con un include, de esta forma deberian hackear tu hosting para conseguirla, y ellos tendran, se supone, seguridad en su sistema.

include(../archivos/conexion.php);
Por poner un ejemplo, si yo tengo esto en conexión,php:

$servidor = 'servidor;
$usuario = 'usuario;
$clave = 'contraseña';

$conexion = mysql_connect($servidor, $usuario, $clave);

mysql_select_db('basededatos', $conexion);


¿Habría que incluir las etiquetas de apertura y cierre en este archivo conexión.php también iría en el la selección de la base de datos o sólo la conexión?

Para terminar de exponer todas mis dudas y que todo esto sea mas directo.

He encontrado esto:

http://juegodenavegador.wordpress.com/2010/03/22/conexion-a-la-base-de-datos-y-seguridad/

¿Qué pensais sinceramente de ello? Me imagino que también es posible combinar ambas soluciones (la del include y la de encriptar) y que igual que md5 habrá formas de usar AES.

Se me olvidó añadir ¿qué significa eso de fuera del root?

Última edición por GatorV; 29/12/2010 a las 23:06
  #2 (permalink)  
Antiguo 29/12/2010, 18:36
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Seguridad en mysql_connect()

pues creo que el articulo esta sencillo, eso de encriptar mas que todo se hace con las contraseñas, ya que los perfiles de usuarios se guardan normalmente como varchar, lo de tener un archivo con la funcion para conectar no es mala idea aunque mas que todo he leido que se usa es para no tener que volver a colocar los mismos parametros cada vez que tengas que hacer una conexion con la base de datos, sino que solo incluyes este archivo y llamas a esta funcion, para seguridad en base de datos creo que seria bueno que buscaras mas que todo informacion sobre como prevenir la injeccion sql, y otros tipos de ataques que te puedan hacer por consultas, lo de fuera del root creo que es fuera de tu directorio donde tienes las paginas de tu sitio, espero que mi comentario te sirva
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 29/12/2010, 18:48
Avatar de Gambinoh  
Fecha de Ingreso: diciembre-2010
Mensajes: 348
Antigüedad: 13 años, 4 meses
Puntos: 11
Respuesta: Seguridad en mysql_connect()

Cita:
Iniciado por carlos_belisario Ver Mensaje
pues creo que el articulo esta sencillo, eso de encriptar mas que todo se hace con las contraseñas, ya que los perfiles de usuarios se guardan normalmente como varchar, lo de tener un archivo con la funcion para conectar no es mala idea aunque mas que todo he leido que se usa es para no tener que volver a colocar los mismos parametros cada vez que tengas que hacer una conexion con la base de datos, sino que solo incluyes este archivo y llamas a esta funcion, para seguridad en base de datos creo que seria bueno que buscaras mas que todo informacion sobre como prevenir la [URL="http://es.wikipedia.org/wiki/Inyecci%C3%B3n_SQL"]injeccion sql[/URL], y otros tipos de ataques que te puedan hacer por consultas, lo de fuera del root creo que es fuera de tu directorio donde tienes las paginas de tu sitio, espero que mi comentario te sirva

Ok, pues ahora que lo dices sí, resulta muy práctico el include aunque en mi caso en este momento no tengo más que una página con conexión a base de datos. Me imagino que si más adelante incluyo un foro podré reutilizar la conexión, es algo más que se.

Con respecto al tema de la contraseña, yo lo planteaba como un añadido a lo otro. Pero tal vez no se lo que digo y solo resulta algo rebuscado.

Me has aclarado bastante, pero sigo sin entender... yo en local tengo por ejemplo wamp/www en Windows y var/www en Linux, ahora bién si consideramos que mi proveedor de hosting también me da una carpeta que se llama por ejemplo midominio.com ¿Qué significa fuera del directorio donde tengo las páginas de mi sitio? ¿En una carpeta externa al directorio raíz?


Algo así como guardar conexion.php en una carpeta hermana de www dentro de var en Linux o bien una carpeta hermana de www dentro de wamp en Windows... ¿eso quieres decir?
  #4 (permalink)  
Antiguo 30/12/2010, 09:51
Avatar de Gambinoh  
Fecha de Ingreso: diciembre-2010
Mensajes: 348
Antigüedad: 13 años, 4 meses
Puntos: 11
Respuesta: Seguridad en mysql_connect()

Bién ya me ha quedado claro que algunos métodos buenos para asegurar la conexión a la base de datos son:

A) Colocar el archivo fuera de la carpeta del Document Root.

http://www.forosdelweb.com/f18/archivo-fuera-del-root-408707

B) Encriptar con md5 o AES en una función.

Bien ahora mi duda es la siguiente, según me comenta arriba carlos_belisario lo más peligroso pueden ser las inyecciones sql en las consultas.

Yo en mi código uso mysql_real_escape_string() antes de los $_GET por ejemplo:

Código PHP:
Ver original
  1. $id = mysql_real_escape_string($_GET['id']);

Pero en el query no lo uso, mi código para el query es:

Código PHP:
Ver original
  1. $sql = "SELECT * FROM tabla WHERE campo = '$id' ORDER BY id ASC  LIMIT $inicio, $fin";
  2.  
  3. $query = mysql_query($sql);
  4.  
  5. //Imprimo el query con un while...
  6.  
  7. while($fila = mysql_fetch_assoc($query)) {
  8.     echo $fila['campoíndice'];
  9. }

¿Veis mejoras para evitar las inyecciones sql en estos querys?

La página en un par de dias se sube al servidor y os agradecería muchísimo que aunque sea me recomendarais un link o me dijerais cómo le dariais seguridad.


Gracias por vuestra colaboración ^^

Etiquetas: 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 09:32.