Si usted es el propietario o desarrollador de un sitio web, probablemente sea consciente de la amenaza de los piratas informáticos. Hay muchas maneras de proteger su sitio web ASP o PHP impulsado por la base de datos de los ataques de hackers, que van desde medidas de seguridad débiles a fuertes. Aquí aprenderá acerca de las formas más comunes y efectivas para frenar a los piratas informáticos que usan métodos como ataques de inyección SQL y XSS (secuencias de comandos entre sitios) a través de la cadena de consulta URL y las entradas de formularios. Se tratan dos tipos generales de técnicas de bloqueo de piratas informáticos, incluidas páginas de error personalizadas y validación de entrada. Estos métodos son lo suficientemente simples como para que pueda hacerlo usted mismo con solo conocimientos básicos de codificación. Su mejor estrategia sería poner una combinación de tantos pequeños obstáculos como sea posible.
Pasos
- 1 Los sitios web basados en bases de datos SQL están en riesgo.
- 2 Cualquier página web que pasa parámetros a una base de datos puede ser vulnerable a los ataques. Esto incluye carros de compras de comercio electrónico o cualquier otro sitio web que tenga un formulario de inicio de sesión, búsqueda, etc. Cualquier sitio web basado en una base de datos SQL está en riesgo de piratas informáticos que puedan ingresar a la base de datos por una puerta trasera. Por lo general, estas puertas traseras están presentes en cadenas de consulta de URL y entradas de formulario, como formularios de inicio de sesión, formularios de búsqueda u otros cuadros de texto de entrada de usuario que pueden comunicarse con una base de datos.
- 3 Obtenga una descripción general básica de la piratería.
- Generalmente, un pirata informático puede ingresar caracteres falsos en la cadena de consulta URL o en un cuadro de texto. La entrada falsa se interpreta entonces como SQL en lugar de datos de usuario ordinarios y es ejecutada por la base de datos no confiada. Como resultado, el sitio web puede romperse y mostrar un error, lo que permite al pirata informático obtener información privada sobre la base de datos. Peor aún, las secuencias de comandos peligrosas del pirata informático se pueden ejecutar en la base de datos, lo que puede causar fallas de seguridad y / o daños permanentes.
- 4 Comprende cómo lo hacen los hackers.
- El primer objetivo de un hacker es intentar repetidamente romper un sitio web, causando que muestre una variedad de valiosos errores que revelan detalles de la base de datos privada. De esta forma, puede obtener información sobre la estructura de la base de datos y, en última instancia, crear un mapa o huella de todas sus tablas y columnas. El segundo objetivo del pirata informático es manipular realmente la base de datos mediante la ejecución de scripts de forma maliciosa. Con el control de la base de datos, es posible que el hacker robe números de tarjetas de crédito, borre datos o los infecte con virus, entre otras cosas desagradables. En esencia, la cadena de texto y la cadena de consulta de URL son las dos puertas traseras de una base de datos. Los errores y la manipulación de las puertas traseras son los dos métodos utilizados por los piratas informáticos para finalmente destruir una base de datos.
- 5 Comprenda cómo hackear su propio sitio web.
- Veamos cómo un hacker podría irrumpir en un sitio web. Usando la primera técnica descrita, puede hackear la cadena de consulta URL y hacer que se muestre un error. Puede hacer una prueba simple para hackear su propio sitio web a través de la cadena de consulta URL. Todo lo que tienes que hacer es escribir algo más directamente en la barra de direcciones al final de tu cadena de consulta.
- 6 Escriba su URL como en el siguiente ejemplo y presione Intro: http://www.mywebsite.com/bookreports.asp?reportID=21
- 7Ahora simplemente agregue una comilla simple al final de la cadena de consulta y presione intro: http://www.mywebsite.com/bookreports.asp?reportID=21 '
- 8Generar un error
- 9Como se predijo, es posible que haya roto con éxito su sitio web y haya recibido un error de la siguiente manera.
- 10Tipo de error:
- 11Proveedor Microsoft OLE DB para controladores ODBC (0x80040E14)
- 12[Microsoft] [Controlador ODBC para SQL Server] [SQL Server] Comillas sin cerrar antes de la cadena de caracteres 'AND users.userID = reports.reportsID'.
- 13/bookreports.asp, línea 20
- 14 La comilla simple causa un error de comillas no cerrado y ahora los nombres de las columnas y los nombres de las columnas que alguna vez fueron secretas de su base de datos son públicamente visibles. Después de generar una serie de estos tipos de errores valiosos, un pirata informático puede reconstruir los detalles de la base de datos privada que, en última instancia, lo ayudarán a penetrar y causar estragos en la base de datos.
- 15Ocultar los errores del sitio web
- 16 La mejor solución para evitar que los detalles privados de su base de datos lleguen a manos de un pirata informático es configurar una página de error personalizada para su sitio web. De esta forma, un hacker nunca verá ningún mensaje de error detallado. Si no hace nada más, esta es la cosa número uno que debe tener cada sitio web. De lo contrario, le está dando al pirata informático una invitación abierta a su base de datos y prácticamente le ofrece toda la información que necesita para lanzar un ataque.
- 17Configurar páginas de error personalizadas.
- 18 Algunos servicios de alojamiento utilizan automáticamente páginas de error personalizadas para ayudar a proteger su seguridad. Para configurar su propia página de error personalizada, deberá consultar su servidor web para obtener instrucciones. En general, creará una nueva página HTML para que se vea de la manera que le plazca y que diga algo breve y agradable, como "Lo sentimos, la página que ha solicitado no está disponible". Luego guárdelo como error404.htm y cárguelo en su servidor. Siguiendo las instrucciones de su anfitrión, cambiará la configuración del sitio web para que apunte a la nueva página de error. Esto detendrá a muchos piratas informáticos en su camino.
- 19Manipula la cadena de consulta URL.
- 20 Además de buscar errores, un pirata informático puede introducir un código aún más peligroso que una simple comilla simple en la cadena de consulta URL. En un esfuerzo por ejecutar scripts maliciosos en una base de datos, se emplea una variedad de codificación creativa, como% 20HAVING% 201 = 1 o quizás% 20; apagado sin espera-- o mucho peor. Una vez que el hacker puede ejecutar scripts, la base de datos vulnerable es como masilla en sus manos. El hacker nunca tiene que saber el inicio de sesión de la base de datos o la cadena de conexión porque está usando la cadena de consulta URL que ya tiene una conexión abierta.
- 21http: //www.mywebsite.com/bookreports.asp? ReportID = 21 '; drop table myTablename--
- 22Su tabla está eliminada permanentemente.
- 23Manipula la entrada del formulario.
- 24 El otro punto de entrada más común además de la cadena de consulta URL es la entrada del formulario. Un hacker puede manipular cualquier cuadro de texto dentro de un formulario HTML. Un cuadro de búsqueda o un formulario de inicio de sesión con campos de nombre de usuario y contraseña son objetivos principales. El pirata informático puede ingresar caracteres falsos en el cuadro de texto y enviar el formulario. La entrada se interpreta entonces como SQL en lugar de datos de usuario ordinarios y se ejecuta por la base de datos. Una vez más, este ataque provocará un error para que pueda obtener información privada sobre su base de datos, o puede insertar scripts peligrosos y causar estragos en la base de datos.
- 25Fred '; drop table myTablename--
- 26Su tabla está eliminada permanentemente.
- 27Bloquear la entrada que contiene código malicioso.
- 28 Por ahora, es probable que tengas una buena idea de cuánto daño puede hacer un hacker y estás listo y dispuesto a hacer lo que sea necesario para detenerlos. La forma principal de evitar que un pirata informático manipule la cadena de consulta de URL y los cuadros de texto es bloquear su entrada. Pero, ¿cómo se determina quiénes son, qué aportan y si es seguro o no? Desafortunadamente, no puedes saber Por lo tanto, debe suponer que toda la entrada del usuario podría ser potencialmente peligrosa. Un dicho común en el mundo de la programación es que TODA ENTRADA ES MALA. Por lo tanto, debe tratarse con precaución. Debe verificarse todo el contenido de todos para asegurarse de que el código peligroso no se deslice. Esto se logra al verificar todas las entradas enviadas a través de una cadena de consulta o formulario y luego rechazar o eliminar los caracteres inseguros antes de que lleguen a la base de datos. Si esto parece un montón de problemas, tienes razón. Sin embargo, es el precio que pagamos para proteger nuestros sitios web y bases de datos contra la ira de los piratas informáticos. Es su responsabilidad como webmaster asegurarse de que solo se permita la entrada limpia y segura a su base de datos.
- 29Validación de entrada.
- 30 Para verificar si la entrada ingresada en la querystring o el cuadro de texto de la URL es segura, podemos usar las reglas de validación de entrada. En otras palabras, el uso de código ASP en una página web puede validar la entrada recopilada de la cadena de consulta o del formulario para asegurarse de que solo contenga caracteres seguros. Una vez que la entrada se considera segura, puede almacenarse en una nueva variable, insertarse en la cadena SQL y enviarse a la base de datos. Para más detalles sobre la validación,
- 31El ciclo de lavado y enjuague
- 32 La validación de entrada debe ser un proceso de dos partes, como un ciclo de lavado y enjuague. Queremos limpiar minuciosamente todas las entradas comprobando en primer lugar los caracteres seguros y segundo comprobando si hay cadenas incorrectas. Vea los recursos al final de este artículo para una discusión más profunda sobre este método.
- 33Filtrar personajes
- 34Otro método que se puede usar junto con las dos funciones anteriores, pero se considera que es muy débil cuando se usa solo, es desinfectar la entrada filtrando o escapando.
- 35 Una amenaza conocida es la comilla simple o el apóstrofo porque rompe la declaración de SQL. A continuación se muestra un ejemplo ASP que hace que la comilla simple sea inofensiva, reemplazándola por dos comillas simples.
- 36'duplicar comillas simples
- 37nuevo Safe String = replace (searchInput, "'", "")
- 38 Otras variaciones para la función de reemplazo incluyen eliminar la etiqueta de script y reemplazarla con un espacio. O bien, filtre caracteres como el signo de dólar $ comilla "punto y coma y apóstrofe" los corchetes angulares izquierdo y derecho <> los paréntesis izquierdo y derecho () el signo # y el símbolo &. O convierta estos caracteres a sus entidades HTML.
- 39Recuerde utilizar una solución que mejor se adapte a su sitio web o consulte a un profesional.
- 40 Finalmente, hay algunas otras medidas de seguridad que puede investigar y explorar por su cuenta. Recuerde que un pirata informático puede guardar fácilmente una copia de su página web, luego modificar el HTML y el javascript, y luego volver a cargar la página. Por lo tanto, es mejor nunca utilizar javascript solo para la validación de entrada, ya que puede eliminarse fácilmente y, en su lugar, duplicar cualquier validación de script java con validación ASP. Además, los campos de entrada ocultos son una amenaza de la misma manera, ya que pueden modificarse fácilmente para incluir código falso. Otros consejos incluyen: Nunca revele ninguna pista sobre su base de datos, lo que incluye hacer que los nombres de los campos de entrada sean los mismos que los nombres de los campos de la base de datos. Establezca siempre una longitud máxima para las entradas y trunque el exceso.
- 41 Si desea utilizar técnicas de seguridad más avanzadas, consulte los recursos que se encuentran al final de este artículo. Los temas tratados incluyen, políticas de contraseñas, desbordamiento de búfer, nombres de tabla y columna de creatividad, alias de nombre de tabla, establecer y verificar tipos de datos, archivos .bak, procedimientos almacenados con parámetros y archivos de registro.