Regresar a la página www.ComoCrearTuWeb.com
Página 1 de 4 1234 ÚltimoÚltimo
Resultados 1 al 15 de 57

Tema: Seguridad en el uso del PHP y Bases de Datos

  1. #1
    Administrador CCTW Webmaster de CCTWHabitante
    Fecha de Ingreso
    10 ago, 05
    Ubicación
    Cartagena, España
    Mensajes
    3,721
    Poder de Reputación
    10

    Seguridad en el uso del PHP y Bases de Datos

    Qué tal.

    Hay una cosa que me preocupa un poco. Tengo entendido que uno de los caminos que usan los hackers para entrar en los servidores es a través de las bases de datos. Como andamos aprendiendo su uso me parece una buena idea empezar a investigar desde ya cómo evitar estas entradas no esperadas cuando usamos aplicaciones de php y mysql.

    Por el momento no tengo ni idea, me ayudais a investigar? Podemos ir colocando acá lo que aprendamos y conforme le demos forma pasarlo a los contenidos de CCTW en forma de lecciones, oki?

    Por el momento lo único que se es que los hackers usan lo que llaman "inyecciones" en las páginas que poseen codigo php con instruccones "if".... voy a investigar y os cuento. Haced lo mismo y terminamos antes, vale?

    Un abrazo!!!

  2. #2
    Esto empieza a ser un vicio... Habitante Avatar de nosabernada
    Fecha de Ingreso
    02 ago, 08
    Ubicación
    Velar por CCTW
    Mensajes
    1,418
    Poder de Reputación
    21
    Hola jorgens,

    lo que se yo ahora, es que los cracker (no hacker, hay diferencias entre ellos) para entrar en una base de datos, primero necesitan saber en que IP esta alojada. Para ello, usan, flecos entre web, entre ellos los errores 404.
    Por eso es importante, crear una web para el error 404 personalizada, para eliminar ese fleco.

    Investigare tambien y os cuento

    nosaber!

  3. #3
    Esto empieza a ser un vicio... Habitante
    Fecha de Ingreso
    28 dic, 07
    Ubicación
    Argentina
    Mensajes
    443
    Poder de Reputación
    17
    voy a ser breve con este tipo de vulnerabilidades.
    SQLi (SQL Injection):

    Ocurre cuando obtenemos datos mediante GET o POST sin restricciones a codigos especiales como comillas, cometarios ("--","#","/*"), etc. en sí todo lo que se les ocurra que pueda alterar una sentencia SQL.

    Ejemplo del código vulnerable:

    <?php
    $name=$_POST['name'];
    $pass=$_POST['pass'];
    $conexion=mysql_connect($dbhost,$dbuser,$dbpass) or die("Error.");
    mysql_select_db($dbname,$conexion) or die("Error.");
    mysql_query("select * from users where name='".$name."',$conexion) or die("Error");

    El tema es que si ponemos como nombre por ejemplo ' OR 1=1--
    la sentencia quedaría así:
    mysql_query("select * from users where name='"' OR 1=1--"',$conexion) or die("Error");

    lo que retorna true porque 1=1 y con el cometario ("--") igonramos todo lo que sigue.

    Codigo seguro:
    $name=htmlspecialchars($_POST['name']);
    $pass=htmlspecialchars($_POST['pass']);
    $conexion=mysql_connect($dbhost,$dbuser,$dbpass) or die("Error.");
    mysql_select_db($dbname,$conexion) or die("Error.");
    mysql_query("select * from users where name='".mysql_real_escape_string($name)."',$conexi on) or die("Error");

    htmlspecialchars= pasa todos los caracteres html a su entidad html.
    mysql_real_escape_string= coloca slashes delante las comillas y otros caracteres.

    Saludos.

  4. #4
    Me va gustando esto... Habitante
    Fecha de Ingreso
    11 jun, 08
    Ubicación
    Barcelona
    Mensajes
    80
    Poder de Reputación
    14
    Cita Iniciado por =FeMe=
    voy a ser breve con este tipo de vulnerabilidades.
    SQLi (SQL Injection):

    Ocurre cuando obtenemos datos mediante GET o POST sin restricciones a codigos especiales como comillas, cometarios ("--","#","/*"), etc. en sí todo lo que se les ocurra que pueda alterar una sentencia SQL.

    Ejemplo del código vulnerable:

    <?php
    $name=$_POST['name'];
    $pass=$_POST['pass'];
    $conexion=mysql_connect($dbhost,$dbuser,$dbpass) or die("Error.");
    mysql_select_db($dbname,$conexion) or die("Error.");
    mysql_query("select * from users where name='".$name."',$conexion) or die("Error");

    El tema es que si ponemos como nombre por ejemplo ' OR 1=1--
    la sentencia quedaría así:
    mysql_query("select * from users where name='"' OR 1=1--"',$conexion) or die("Error");

    lo que retorna true porque 1=1 y con el cometario ("--") igonramos todo lo que sigue.

    Codigo seguro:
    $name=htmlspecialchars($_POST['name']);
    $pass=htmlspecialchars($_POST['pass']);
    $conexion=mysql_connect($dbhost,$dbuser,$dbpass) or die("Error.");
    mysql_select_db($dbname,$conexion) or die("Error.");
    mysql_query("select * from users where name='".mysql_real_escape_string($name)."',$conexi on) or die("Error");

    htmlspecialchars= pasa todos los caracteres html a su entidad html.
    mysql_real_escape_string= coloca slashes delante las comillas y otros caracteres.

    Saludos.


    La explicación perfecta, y la solución es válida normalmente, pero dependiendo del parámetro "magic_quotes" del PHP del servidor puede fallar esa solución.

    Lo correcto sería (para la variable $act):

    Código:
    if( get_magic_quotes_gpc() ) $act = stripslashes($act);
    if( !is_numeric($act) ) $act = mysqli_real_escape_string( $db, stripslashes($act) );
    Y con ésto ya la podríamos usar.

    Yo me he creado una clase para manejar las peticiones a la base de datos que ya me da los resultados en array, para no repetir lo mismo cientos de veces. Te lo dejo en mi web, que paso de copiarlo aquí con el BBCode:


    Acceso PHP a base de datos mysql desde una clase

    ¡Saludos!

  5. #5
    Me va gustando esto... Habitante
    Fecha de Ingreso
    20 jul, 10
    Ubicación
    españa
    Mensajes
    52
    Poder de Reputación
    11

    hola

    hola tengo entendido que el alojamiento tiene un sistema anti hack si no esta dentro del servidor panel de control no seria posible conectar , ¿como suponen que un jacker ba entrar ahy? , tendria que ser muy devil el alojamiento.
    ~|||Querer es Poder|||~

  6. #6
    Esto empieza a ser un vicio... Habitante Avatar de codomodragon
    Fecha de Ingreso
    11 nov, 09
    Ubicación
    Venezuela
    Mensajes
    1,281
    Poder de Reputación
    18
    error, men te lo dice un hacker retirado,
    Si se puede hacer para eso existen los exploits.
    Además el hackeo de base de datos es tan común que ni siquiera las grandes compañías como los dueños de WoW pudieron evitar que les hackearan las bases de datos y le copiaran su obra maestra (el juego WoW).

    Además si buscas en la web paginas como face boock o youtube también les han hackeado las bases de datos, y en la web conseguirás plantillas de sus paginas con cuentas y demás.

    En este mundo nada es imposible, por eso los web master siempre debemos estar pendientes de cualquier debilidad en nuestras webs (aunque sea probando su seguridad tu mismo).


    edito

    Haber me explico mejor con los exploits.

    Los exploits operan normalmente através de los errores 404 ya que esos huecos en la web son casi como unas puertas abiertas al Server, permitiéndote meter lo que te de la gana en esos huecos (mas que todo se colocan puertas de acceso secundarias, algo así como un ftp global)

    Aja pero como ce hace con los php, tal y como dicen los errores de sintaxis o pequeños fallos casi invisibles, o que el Server se sature y el php sufra un error, o simplemente un código débil en lo que se refiere a su estructura; también es una entrada para los exploits, ya que através de ellos se puede entrar a la bd con una puerta de acceso secundaria.
    Por eso debemos cuidarnos de cualquier hueco o de códigos débiles en la estructura, y sobre todo (algo que debería decir en el curso paso a paso) que en todas las carpetas en donde alojemos imágenes o que alojemos otras carpetas debe haber una hoja html nombrada index (es muy impórtate que posea ese nombre) que no contenga nada solo es para evitar ese hueco.
    La ultima debilidad que les nombre es la mas grave ya que si usamos el analizado SSS mostrara eso como un error grave, los Crakers experimentados usan este error para apropiarse de tu web ya que la pagina que mostraría el servidor diría "index of..." y las carpetas o imágenes que estuvieran hay es una entrada directa a los archivos de control de la web y en esencia los accesos a todo el Server (con Server no me refiero solo a tu pagina si no a todo el servidor ficio).

    Amigo los programas de protección lamentablemente no pueden hacer mucho contra estos errores ya que son excepciones para que las webs funcionen como deben.
    OMG WTF BBQ
    Disculpen cualquier error o metidota de pata, la universidad me tiene loco y candado.

    www.mangasve.com.ve el lugar venezolano del manga

    http://www.rauch.cl/cctw.jpg

  7. #7
    Me va gustando esto... Habitante
    Fecha de Ingreso
    20 jul, 10
    Ubicación
    españa
    Mensajes
    52
    Poder de Reputación
    11

    woo

    y tu sabes hacer eso de los sploit meterte en esos huecos y entrar en la db y manipular esa informacion? como es posible.


    cuanto sabes tu de php ? que barbaro.
    ~|||Querer es Poder|||~

  8. #8
    Esto empieza a ser un vicio... Habitante Avatar de codomodragon
    Fecha de Ingreso
    11 nov, 09
    Ubicación
    Venezuela
    Mensajes
    1,281
    Poder de Reputación
    18
    men eso no es con php se hace con c++ idioma de programación de software.

    No se necesita ser un genio para hacer esto, solo se necesita tener el segundo semestre de programación aprobado y listo.

    Amigo recuerda que no importa la experiencia que uno tenga siempre te vas a encontrar con algo nuevo.
    OMG WTF BBQ
    Disculpen cualquier error o metidota de pata, la universidad me tiene loco y candado.

    www.mangasve.com.ve el lugar venezolano del manga

    http://www.rauch.cl/cctw.jpg

  9. #9
    Me va gustando esto... Habitante
    Fecha de Ingreso
    11 ago, 05
    Ubicación
    España
    Mensajes
    233
    Poder de Reputación
    19
    Entonces, cosas que podemos hacer para mejorar la seguridad de nuestras webs serían, por ejemplo....

    1.- Asegurarnos de que en toda carpeta de nuestra web existe un index.html aunque esté vacio.

    2.- Restringir los caracteres que pueden recoger los GET y POST.

    3.- Definir una página de error 404.

    He entendido bien? Se os ocurren más cosas?

    Muy interesante el hilo este.
    Natashka
    Yamaha SR 250

  10. #10
    Me va gustando esto... Habitante
    Fecha de Ingreso
    07 jul, 09
    Ubicación
    mexico
    Mensajes
    117
    Poder de Reputación
    13
    entoces . . . ?

    aparte del index.html que tengo en la raíz....., debo de crear otro index.html ( sin nada de información, solo vació ese archivo ) en las carpetas que tengo en mi web y hasta en la de objetos también?

    perdón, pero no me queda claro . . .,

    aun no tengo bases de datos en una de web ... , pero las tendré..., aun así , ¿ sin ser dinámica mi web, siendo estática..., debo crear ese archivo en mis carpetas?

    saludos
    http://latinodance.myartsonline.com/plantilla.html

    http://paginausada.myartsonline.com/plantilla.html

    El Exito No Depende De Lo Que Se Hace....!!!!
    Si No... De Como Se Hace!!!!

  11. #11
    Esto empieza a ser un vicio... Habitante Avatar de cesar_ed
    Fecha de Ingreso
    11 feb, 10
    Mensajes
    563
    Poder de Reputación
    14
    es para mayor seguridad, si te das cuenta si entras a una carpeta sin index se verian y visualizarian todos tus archivos , poniendo un index ya no se podrian visualizar asi de facil.
    Es facil programar "Solo interesate en aprender"

  12. #12
    Esto empieza a ser un vicio... Habitante Avatar de codomodragon
    Fecha de Ingreso
    11 nov, 09
    Ubicación
    Venezuela
    Mensajes
    1,281
    Poder de Reputación
    18
    En otras palabras si.
    Sin importar si es dinámica o estática es necesario hacer esto para mayor seguridad.
    Aparte agrego que en si esas tres cosas que aclaramos es lo esencial para proteger las webs, lo demás depende de uno y de la estructura de tu pagina.
    OMG WTF BBQ
    Disculpen cualquier error o metidota de pata, la universidad me tiene loco y candado.

    www.mangasve.com.ve el lugar venezolano del manga

    http://www.rauch.cl/cctw.jpg

  13. #13
    Me va gustando esto... Habitante
    Fecha de Ingreso
    23 mar, 11
    Ubicación
    Cali, Colombia
    Mensajes
    68
    Poder de Reputación
    10
    Hago mi aportación y experiencia en el tema (ya que me han hackeado las BBDD varias veces eliminado el contenido que había en ellas )

    Si vas a recoger una variable $_POST o $_GET y la vas a guardar en otra, es recomendable usar las diferentes funciones (definidas por defecto de PHP) que han mencionado nuestros compañeros anteriormente.

    Yo para recoger una variable $_POST del campo comentario de un formulario, por ejemplo, hago lo siguiente:

    Código PHP:
    ?
    $variable stripslashes($_POST['comentario']); // Elimino código malicioso
    $variable strip_tags($variable); // Elimino código malicioso
    $variable htmlentities($variable); // Elimino código HTML que pueda alterar el diseño de mi web.
    ?> 
    Con este sencillo código, evito que instroduzcan código malintencionado o no deseado en la BBDD.

    En cuanto a la protección de los archivos e imágenes, pongo en todas las carpetas un index.html vacio :) (Al ver que PHPBB lo hacía, lo empecé a hacer yo también. Después de unas semanas me di cuenta de cual era el objetivo de los index.html en blanco xD )

    Por otro lado, para evitar que los buscadores como Google indexen directorios o archivos que yo no quiero que sean rastreador por dicho buscador, uso las herramientas para webmaster que ofrece google (exactamente la herramienta que te ayuda a posicionar tu web en el buscador) y creo un archivo, robot.txt (google te crea dicho archivo) y en él, defino que archivos y directorio permito a google que explore e indexe.
    Última edición por Áldaron; 02/04/2011 a las 13:09
    Pienso, comparto, aprendo, luego creo

  14. #14
    Me va gustando esto... Habitante
    Fecha de Ingreso
    31 may, 10
    Ubicación
    Madrid, España
    Mensajes
    242
    Poder de Reputación
    12
    Perdon pero yo voy mucho mas atras que vosotros:

    Lo de definir una pagina de error 404. ¿es crear una pagina llamada 404.html?

    Es una pregunta tonta pero yo no me aclaro si no.

    Gracias y perdon por lo torpe

  15. #15
    Esto empieza a ser un vicio... Habitante Avatar de lantiga
    Fecha de Ingreso
    23 feb, 11
    Mensajes
    905
    Poder de Reputación
    14
    la configuración de errores se puede hacer de dos maneras; vía apache o vía htaccess, (Todo depende del hosting).
    Suscribete a Los videotutoriales de Lantiga y podre hacer vídeos más largos y con mejor calidad.

Temas Similares

  1. Bases de datos
    Por apolo en el foro Php Bases de Datos y MySQL (Nuevo!)
    Respuestas: 4
    Último Mensaje: 18/11/2010, 04:12
  2. Consulta - Varias bases de datos
    Por nosabernada en el foro Php Bases de Datos y MySQL (Nuevo!)
    Respuestas: 5
    Último Mensaje: 21/04/2009, 16:38

Permisos de Publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •