Foros del Web » Programando para Internet » PHP »

Crear conexion a base de datos con php sin exponer la clave

Estas en el tema de Crear conexion a base de datos con php sin exponer la clave en el foro de PHP en Foros del Web. Hola amigos del foro, soy un programador Jr. y estoy realizando mi primera aplicacion web en php para la empresa, mi problema es que me ...
  #1 (permalink)  
Antiguo 13/10/2008, 11:20
 
Fecha de Ingreso: octubre-2008
Mensajes: 24
Antigüedad: 15 años, 6 meses
Puntos: 0
Crear conexion a base de datos con php sin exponer la clave

Hola amigos del foro, soy un programador Jr. y estoy realizando mi primera aplicacion web en php para la empresa, mi problema es que me tengo que conectar a la base de datos de la empresa pero no quieren colocar la clave en el archivo asi nomas, yo lo hago de la forma tradicional asi:
Código PHP:
$dsn="BaseSQL32"
$usuario="mi_usuario";
$clave="mi_pass";
$conexion=odbc_connect($dsn$usuario$clave); 
mi pregunta es que como puedo hacer para que la clave no tenga que estar expuesta en este archivo ya que cualquiera pudiera verla en un notepad y eso es lo malo que muchas personas tienen acceso al servidor, como hago???
  #2 (permalink)  
Antiguo 14/10/2008, 01:07
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Respuesta: Crear conexion a base de datos con php sin exponer la clave

Movido al foro de PHP desde Bienvenida a Foros del Web.

Saludos,
  #3 (permalink)  
Antiguo 14/10/2008, 01:19
 
Fecha de Ingreso: mayo-2005
Mensajes: 43
Antigüedad: 18 años, 11 meses
Puntos: 0
Respuesta: Crear conexion a base de datos con php sin exponer la clave

Hola, una forma fácil es utilizando stripslashes(base64_encode($CODIGO) a tu código...

Hay otras formas más seguras como ionCube PHP Encoder, pero son de pago..

Saludos.
  #4 (permalink)  
Antiguo 14/10/2008, 07:51
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Crear conexion a base de datos con php sin exponer la clave

pero creo que si aplicas eso, (base64_encode($CODIGO) con aplicar lo contrario devolvera la clave, y si alguien es capaz de conseguir tu clave de la bbdd codificada de esa forma sera capaz de descodificarla

addslashes(base64_decode($code));

de todas formas si le das a ver- codigo fuente en el navegador solo veras el codigo HTML y nada del PHP

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);




Un saludo

Última edición por jaronu; 14/10/2008 a las 08:08
  #5 (permalink)  
Antiguo 14/10/2008, 07:55
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Respuesta: Crear conexion a base de datos con php sin exponer la clave

Yo creo que éste tema es más de administración el servidor que de PHP... No conozco mucho las formas de enmascarar PHP, pero teniendo acceso al código fuente siempre habrá maneras de desencriptarlo. Creo recordar que había alguna posibilidad de compilar el código (y se supone que se gana rendimiento, además). Pero supongo que también se podrá descompilar...

Sinceramente, creo que vale más la pena ajustar los permisos del fichero de configuración para que sólo tengan acceso los usuarios justos, que intentar ofuscar la contraseña.
  #6 (permalink)  
Antiguo 14/10/2008, 08:11
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Crear conexion a base de datos con php sin exponer la clave

tener acceso a codigo fuente es desde el navegador,
ver-codigo fuente
y solo se puede ver el codigo HTML que PHP genera, pero nunca el codigo PHP, para eso habria que hackear el hosting
y eso suele ser bastante complicado.
  #7 (permalink)  
Antiguo 14/10/2008, 08:14
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Respuesta: Crear conexion a base de datos con php sin exponer la clave

Jaronu, no creo que se refiera a eso, sino a gente que tiene acceso al propio servidor, supongo que físico o remoto (ssh, telnet, rdp, etc...)
  #8 (permalink)  
Antiguo 14/10/2008, 08:23
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Crear conexion a base de datos con php sin exponer la clave

Si, tienes razon.

un saludo
  #9 (permalink)  
Antiguo 14/10/2008, 08:28
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Crear conexion a base de datos con php sin exponer la clave

ps creo que definitivamente, no se puede, y la unica solucion es que ese archivo sea restringido para cualquier personal de tu organizacion u otros..... ya que no creo que cualquiera tenga acceso al cpanel o al servidor web.

suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #10 (permalink)  
Antiguo 14/10/2008, 08:30
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Crear conexion a base de datos con php sin exponer la clave

segun el dice literalmente

"muchas personas tienen acceso al servidor"
  #11 (permalink)  
Antiguo 14/10/2008, 08:45
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Crear conexion a base de datos con php sin exponer la clave

a ya ps.... en todo caso, el solo se esta matando, ya que tendria que hacer auditorias a cada instante para detectar si alguien modifica algo.... tener backups y mucho mas.

solo aporto como ustedes compañeros foreros, que no debe ser lo mas apropiado que:
"muchas personas tienen acceso al servidor".

suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #12 (permalink)  
Antiguo 14/10/2008, 11:22
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Crear conexion a base de datos con php sin exponer la clave

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);
Yo opto por esa opcion. Aunque alguien con conocimientos de PHP puede facilmente crear un script PHP para recoger las variables.

No deberias dejar que "muchas personas tengan acceso al servidor".
Si estas personas tienen acceso al servidor solo para subir archivos, crea una interface para dicha tarea y asi limitas el acceso al servidor.
  #13 (permalink)  
Antiguo 15/10/2008, 16:15
 
Fecha de Ingreso: octubre-2008
Mensajes: 24
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Crear conexion a base de datos con php sin exponer la clave

Gracias a todos por responder, disculpen la tardanza pero me estaba quebrando la cabeza pensando en como lo tendria que hacer, al final decidi hacerlo asi:

Código PHP:
<?php 
$dsn
="BaseSQL32"
$usuario="prg";
$clave="MTY2OTk2";
$conexion=odbc_connect($dsn$usuariobase64_decode($clave));

if (!
$conexion){
    
    exit(
"Problema de conexion con la base de datos, Intentelo mas tarde");
}    
?>
claro, que para obtener $clave tuve que aplicar la inversa de base64, lo he hecho asi porque las personas que manejan el servidor son mas de redes que de programacion, ademas el dejar poco acceso al servidor depende de la empresa y no de mi persona, pero en fin...... gracias a todos por contribuir
  #14 (permalink)  
Antiguo 15/10/2008, 17:30
 
Fecha de Ingreso: mayo-2006
Mensajes: 178
Antigüedad: 17 años, 11 meses
Puntos: 7
Respuesta: Crear conexion a base de datos con php sin exponer la clave

Una alternativa a base64_encode() sería md5().

http://ar.php.net/manual/en/function.md5.php
  #15 (permalink)  
Antiguo 17/10/2008, 01:15
 
Fecha de Ingreso: mayo-2005
Mensajes: 43
Antigüedad: 18 años, 11 meses
Puntos: 0
Respuesta: Crear conexion a base de datos con php sin exponer la clave

Cita:
ps creo que definitivamente, no se puede, y la unica solucion es que ese archivo sea restringido para cualquier personal de tu organizacion u otros..... ya que no creo que cualquiera tenga acceso al cpanel o al servidor web.
He he... se olvidan de Ioncube... no es infalible pero hay un altísimo grado de encriptación...

El detalle es que... es de pago, pero como es empresa... Normal no?

Saludos
  #16 (permalink)  
Antiguo 17/10/2008, 01:35
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Respuesta: Crear conexion a base de datos con php sin exponer la clave

pues si tengo acceso al server como root y veo eso y quiero tener la password si o si tarde o temprano lo lograre, creo que la gente que tiene acceso al root en este caso debe ser gente capacitada ahora si solo quieren el server para jugar e instalar paquetes es otro cuento, deberian pasarles otra maquina, y si lo quieren para jugar a aprender como funciona linux se les crea una cuenta, aparte.....

todo va por un tema de manejo del servidor, no es necesario ser siempre root para trabajar en el server...
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #17 (permalink)  
Antiguo 17/10/2008, 01:42
 
Fecha de Ingreso: enero-2008
Mensajes: 33
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Crear conexion a base de datos con php sin exponer la clave

Cordila saludo,
lo que estoy tratando de implemetar que cada usuario del software tenga sus propios permisos de la base de datos.

Es decir, tras crear un usuario en el sistema, guardo en una tabla los datos del mismo, pero la autenticación la realiza la base de datos.

Si la base de datos rechaza la conexion por la constraseña del usuario entonces lanzo el error de "usuario/contraseña incorrectos", conociendo previamente el código error que devuelve la base de datos por dicho error, ya que si el problema es otro, la respuesta es otra.

Otra opcion es crear un usuario con permiso solo de consulta a la base de datos y tabla de "usuarios registrados".

Si alguien tiene pro o contras a estas opciones, me gustaria conocer su opincio, ya que aun estoy en etapa experimental.
  #18 (permalink)  
Antiguo 17/10/2008, 01:47
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Crear conexion a base de datos con php sin exponer la clave

yo pienso, si nadie mas es programador en la empresa... que se ganarían con ver los scripts... de editarlos es obvio, esta mal...!!

pero... para que ofuscar algo que solo tu sabrás manejar... total, si yo haría algo similar usaría localhost/root (sin contraseña) para conectarme... no se me hace un graaan riesgo si solo es local... es mas, configuraría el php.ini para auto conectar siempre... de ese modo solo se necesitarían escribir las querys y no las conexiones...

bueno, eso pienso yo... para que mal viajarse en hacer algo super complejo y de máxima seguridad si solo papá lo va usar (y solo sabe usar IE)

suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 19:50.