Comunidad de diseño web y desarrollo en internet online

Seguridad: Leer login y pass de conexion a la BD desde un TXT

Citar            
MensajeEscrito el 06 Ago 2012 09:02 pm
Hola, soy nuevo y estoy haciendo una pagina en PHP que se conecta a una BD para mostrar una serie de charlas y sus ponentes, fecha de presentación, etc.

Mi pregunta es, que tan seguro es leer el login y pass a la BD desde un TXT? Debería hacerlo de otra forma? Es que abro y cierro la BD en varios sitios y no quiero escribir cada vez el login y usuario, además, si lo cambio en un futuro, no tengo que estar modificándolo en un montón de sitios, sino solo en el TXT. Por ejemplo, sería bastante normal que cambiase el password cada cierto tiempo.

El archivo del que leo el host, login y pass se llama "connect.txt" y sus contenidos son, por ejemplo:

Código :

localhost root password

Este es mi código (por favor no reírse, que aún estoy aprendiendo):

Código PHP :

function charlas() {
   // Leo los parametros de la funcion "mysql_connect" de un archivo que contiene una sola linea
   $ar=fopen("connect.txt","r") or die("No se pudo abrir el archivo");
   $linea=fgets($ar);
   fclose($ar);

   // (Esto lo hago porque "fgets" guarda un espacio en blanco cuando lee un retorno de carro)
   // Los parametros estan separados por espacios
   $connect =explode(" ", $linea);
   $servidor=$connect[0];
   $usuario =$connect[1];
   $clave   =$connect[2];

   // Me conecto a la BD para listar todas las charlas:
   $conexion=mysql_connect($servidor, $usuario, $clave) or die("Problemas en la conexion");
   mysql_select_db("prueba",$conexion) or  die("Problemas en la selección de la base de datos");
   $registros=mysql_query("select * from charlas order by fecha, hora asc",$conexion) or die("Problemas en el select:".mysql_error());

// Resto del codigo de la funcion charlas......
// ...
// ...
}

Muchas gracias de antemano

Por xirux-nefer

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 Ago 2012 01:25 am
con que te refieres a varios sitios??? a lugares fuera del servidor?? o simplemente a directorios??
si es entre directorios, pues en php lo mejor es crear un archivo con funciones como
conexion.php

Código PHP :

function conectar_db()
{
     return mysql_connect('localhost', 'root','password') or die("Problemas en la conexion");
}

y desde tu archivo charlas por ejemplo
charlas.php
solo haces un

Código PHP :

require 'conexion.php';
$conexion=conectar_db();
mysql_select_db("prueba",$conexion) or  die("Problemas en la selección de la base de datos");
$registros=mysql_query("select * from charlas order by fecha, hora asc",$conexion) or die("Problemas en el select:".mysql_error());

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 07 Ago 2012 07:35 am

tuadmin escribió:

con que te refieres a varios sitios??? a lugares fuera del servidor?? o simplemente a directorios??
si es entre directorios, pues en php lo mejor es crear un archivo con funciones como
conexion.php

Código PHP :

function conectar_db()
{
     return mysql_connect('localhost', 'root','password') or die("Problemas en la conexion");
}



Ah, tienes razón.
Si, ya tengo un archivo "funciones.php" donde van todas las funciones, y luego simplemente lo cargo desde las diferentes paginas como en tu ejemplo, solo que no se me había ocurrido poner el código para conectarse en una función aparte. Lo estaba repitiendo en cada función (a eso me refiero con varios sitios).

Vale, con eso resuelvo el problema de modificar en un solo sitio.
(Obcecadoooooo estoy obcecadoooooo.....)

Ahora, respecto a la seguridad, debería poner el host, login y pass directamente en esa función? Seria eso mas seguro que ponerlo en un archivo aparte? Por ahí leí que era más seguro poner los datos de la conexión en un directorio que no sea el público, por eso los estaba poniendo en un TXT, para así poner el TXT con la información de la conexión en un directorio no publico.

No tengo ni idea, qué me recomiendas?

Por xirux-nefer

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 Ago 2012 12:24 pm
Sí, es mejor poner ese archivo en un directorio no público si tienes esa posibilidad.

Pero mejor que ponerlo en un txt como lo has hecho tú o separar la función de conexión como propone tuadmin, es usar constantes globales.

Crea un archivo PHP llamado, por ejemplo, "constantes.php", que contenga algo como esto:

Código PHP :

define("SERVIDOR","localhost");
define("USUARIODB","root");
define("CLAVEDB","password");


Eso define tres constantes que luego puedes usar así:

Código PHP :

<?php
require("../contantes.php");
function conectar_db()
{
     return mysql_connect(SERVIDOR, USUARIODB, CLAVEDB) or die("Problemas en la conexión");
}


Siempre que incluyas correctamente el archivo "contantes.php", dispondrás de las contantes con los valores del login de la conexión.

Saludos.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 08 Ago 2012 10:24 am
Gracias por las respuestas, me han sido muy útiles.

Por xirux-nefer

5 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.