Autor Tema: Seguridad mySQL - PHP ocultar contraseña y datos de acceso contra hackers  (Leído 27022 veces)

URKA84

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 90
    • Ver Perfil
Hola.

Hace tiempo llevo haciendo una página web y me he dado cuenta de que necesito ocultar mi contraseña -_- .

Porque sino alguien con malas intenciones podría acceder a mi Base de Datos (ya que la contraseña está en pleno código)

ejemplo de código:
Código: [Seleccionar]
$link = mysql_connect("mysql13.000webhost.com","a4047274_database","password");
¿Cómo ocultar la contraseña "password"?

Gracias por responderme.
« Última modificación: 30 de Septiembre 2014, 09:37 por Alex Rodríguez »

dongo

  • Intermedio
  • ***
  • Mensajes: 177
    • Ver Perfil
Re:Ocultar contraseña en consulta mySQL - PHP
« Respuesta #1 en: 04 de Septiembre 2014, 22:12 »
Hola Urka, para estas cosas, lo que se suele hacer, es crear un fichero llamado config.php donde se definen los datos de la base de datos, un modelo de ejemplo de este fichero podría ser el que sigue.

config.php(este fichero se suele guardar en una carpeta llamada inc o include, o en una de tu preferencia):

Código: [Seleccionar]
<?php
//Datos de configuracion de la base de datos
$servidor           'Url_servidor';         
$usuario   'Usuario_bbdd';  
$pass   'contraseña_bbdd';         
$bbdd   'nombre_bbdd';  
?>


Tras esto, se suele crear un fichero que se encarga de crear la conexión a la base de datos:

conexion.php(Este se suele almacenar en la misma carpeta, inc o include, o de tu preferencia):

Código: [Seleccionar]
<?php
require_once('config.php');

$conexion mysql_connect($servidor$usuario$pass)
or die(
'Error: Database to host connection: '.mysql_error());

mysql_select_db($bbdd$dbh)
or die(
'Error: Select database: '.mysql_error());
?>


Tras esto se suelen establecer unos permisos de:

644 - para archivos
755 - para carpetas

Con estos dos ficheros, ya lo tenemos todo, cuando queramos realizar una una instrucción sql sobre la base de datos, simplemente tendremos que incluir el fichero "conexion.php" y usar la variable $conexion que contiene una conexión a la base de datos.

Sobre ocultar la $password, esto es lo que se suele hacer. Otras cosas que se suelen realizar para conferir seguridad a un sitio, es configurar mysql para que solo permita conexiones desde ips concretas, entonces solo se permitiría acceso desde la maquina donde se almacena tu sitio web.

Mas cosas, crear un usuario concreto en mysql para la base de datos, con los permisos limitados, es decir que por ejemplo solo pueda hacer inserts, updates y select, y todo lo que necesites dentro de tu sitio web, de esta manera, si te pillan la pass, solo podrán realizar esas operaciones permitidas.

Otra cosa, es crear un usuario limitado solo a esa base de datos, por lo que si te pillan la pass, pues solo podrán acceder a la base de datos de la web, pero no a las demás... si las hubiera.

Otra cosa que se suele hacer, es usar sentencias preparadas para evitar la inyección sql. te paso un enlace a la guía de php que habla sobre como usarlas.

http://php.net/manual/es/mysqli.prepare.php

Y bueno, pues si realizas una combinación de todas estas cosas, conferirás una seguridad mayor al servidor.

Y nada, quizá alguien pueda aportar algún consejo mas. Un saludo!!

« Última modificación: 04 de Septiembre 2014, 22:22 por dongo »

programador independiente

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 58
    • Ver Perfil
Re:Ocultar contraseña en consulta mySQL - PHP
« Respuesta #2 en: 05 de Septiembre 2014, 06:09 »
Hola amigo dongo, ahora hasta acá te ando siguiendo jeje.

Respecto a lo que pregunta el compañero URKA84, yo pensaba que por estar dentro del código php nadie podría ver ni contraseñas ni nombres de usuarios, entonces si se puede ver lo que hay dentro de un "<?php ?>" o cómo pueden obtener la contraseña?

De cualquier manera ya he hecho apunte de lo que mencionas aquí para utilizarlo yo también así.

Gracias por tu ayuda, Dios les Bendiga y les Conserve la Salud.

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2662
    • Ver Perfil
Re:Ocultar contraseña en consulta mySQL - PHP
« Respuesta #3 en: 05 de Septiembre 2014, 19:02 »
Hasta donde yo sé es tal y como ha descrito dongo como trabajan los gestores de contenidos php (como Drupal, Joomla,Wordpress, PrestaShop, Moodle, etc.). Estos gestores están preparados por equipos de programadores profesionales y si lo hacen así supongo que es la forma adecuada. Esto no quita para que estos gestores tengan agujeros de seguridad, igual que todo sistema. La seguridad es un aspecto más de la programación pero también es un aspecto de los servidores y de la administración de servidores. Tú puedes tener bien programado un sistema, pero si el servidor tiene un fallo de seguridad y un hacker accede al servidor te pueden destruir o robar lo que tengas dentro. Por eso recomendaciones básicas son mantenerse en servidores que den garantías, actualizar, mantener copias de seguridad, etc. siempre que estemos desarrollando trabajos que tengan algo de importancia. Salu2

URKA84

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 90
    • Ver Perfil
Re:Ocultar contraseña en consulta mySQL - PHP
« Respuesta #4 en: 06 de Septiembre 2014, 07:19 »
Muchas gracias por vuestras respuestas, voy a echarles un vistazo y os respondo en cuanto lo pruebe.

dongo

  • Intermedio
  • ***
  • Mensajes: 177
    • Ver Perfil
Re:Ocultar contraseña en consulta mySQL - PHP
« Respuesta #5 en: 08 de Septiembre 2014, 18:41 »
Efectivamente, como dice Ogramar, la seguridad no solo existe en el código, sino que también se encuentra en los servicios, en este caso hablamos del servicio mysql.

Mysql es un software servidor, y tiene infinidad de opciones de configuración, desde limitar desde que ips se puede acceder al servicio, hasta crear un usuario limitado, por ejemplo: Un usuario al que solo se le permita hacer selects, con lo cual si ese usuario no puede hacer inserts, ni deletes, ni drops, ni creates,.... entonces podemos facilitar sin problemas la pass de ese user sin miedo a que nos ocasionen ningún daño.

La verdad que esto es un tema complejo y extenso, y ahí muchas cosas que se pueden permitir o denegar... Cuestion de estudiar las opciones de seguridad de mysql.

Citar
Respecto a lo que pregunta el compañero URKA84, yo pensaba que por estar dentro del código php nadie podría ver ni contraseñas ni nombres de usuarios, entonces si se puede ver lo que hay dentro de un "<?php ?>" o cómo pueden obtener la contraseña?

Sobree tu pregunta programador independiente, decirte que como tu bien dices al ser código php un usuario cualquiera sin altos conocimientos de seguridad y servidores, es improbable que se haga con los datos de conexión a tu base de datos. En cambio un usuario con altos conocimientos de seguridad y usando alguna técnica maliciosa, es posible que pueda hacerse con tus datos de conexión, por lo tanto, con los consejos qe ofrecí anteriormente, se aumenta bastante la seguridad de tu servidor mysql, aunque siempre cabe la posibilidad de que llegue algún erudito que se haga con tus datos de conexión y te rompa la bbdd.

Por otro lado, yo pienso que estos eruditos de la seguridad, no se molestaran en romper una pagina personal, se suelen molestar mas en paginas con muchísimas visitas, donde realmente pueden provocar un daño importante.

Saludos!!   

Nota de edición: Por supuesto, como dice Ogramar, la backup(copia de seguridad) de la base de datos es imprescindible realizarla cada cierto tiempo y guardarla en lugar seguro, ya sea un pen, un cd, disco duro, en la nube, etc.
« Última modificación: 08 de Septiembre 2014, 21:07 por dongo »

URKA84

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 90
    • Ver Perfil
Re:Ocultar contraseña en consulta mySQL - PHP
« Respuesta #6 en: 15 de Septiembre 2014, 17:30 »
Hola, para qué es la instrucción:
Código: [Seleccionar]
require_once('config.php');

He visto que dongo la utiliza al inicio del archivo "conexion.php".

Lo he mirado por internet pero no me ha quedado muy claro.

URKA84

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 90
    • Ver Perfil
Re:Ocultar contraseña en consulta mySQL - PHP
« Respuesta #7 en: 15 de Septiembre 2014, 17:32 »
Ah claro! ya lo he entendido

LOL

Es para traer los datos del archivo "config.php".  :o


javi in the sky

  • Avanzado
  • ****
  • Mensajes: 393
    • Ver Perfil
Re:Ocultar contraseña en consulta mySQL - PHP
« Respuesta #8 en: 15 de Septiembre 2014, 19:34 »
Tú mismo te has respondido  ;D

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".