2010-02-04 16 views
14

Tengo curiosidad (con fines puramente académicos) cómo pueden frustrarse los valores del sitio web.Seguridad del sitio web: ¿cómo aprender?

  • ¿Qué es, en general, la seguridad web? Servidor y lado del cliente?
  • ¿Cómo saber si un sitio es vulnerable? ¿Cómo prevenir las vulnerabilidades?
  • ¿Cómo arrojar errores del servidor? ¿Es posible romper/apagar un servidor?

Por lo tanto, en resumen, estoy preguntando acerca de la seguridad general en la web, cómo "piratear" y cómo prevenir. ¿Podrías guiarme a algunos recursos? ¿Y tienes alguna sugerencia (ya sea por experiencia o por opinión personal)?

Además, si soy pirata informático: ¿Cuál es la forma más rápida y sencilla de eliminar un sitio?

Respuesta

15

En lugar de tratar de responder exhaustivamente a sus preguntas en una sola página, preferiría remitirlo a alguna guía gratuita excepcional.

  • Lo que, por lo general, es la seguridad web? Servidor y lado del cliente?
  • ¿Cómo saber si un sitio es vulnerable? Cómo prevenir las vulnerabilidades ?

Si usted está particularmente interesado en la seguridad web, en gran medida recomiendan OWASP (Proyecto Abierto de Seguridad de Aplicaciones Web). OWASP es un consorcio que se centra exclusivamente en la seguridad web para el desarrollo y las pruebas. http://www.owasp.org/index.php/Getting_Started

Más allá de eso, hay varios buenos libros sobre el tema. La mayoría de los expertos confían en las pruebas de penetración o "piratería ética" para revelar si un sitio es vulnerable. Esto requiere mucho tiempo y experiencia. Aunque se pueden realizar algunas pruebas rápidas, un esfuerzo integral implica un esfuerzo de prueba significativo.

  • ¿Cómo arrojar los errores del servidor? ¿Es posible romper/apagar un servidor?

La mayoría de las pruebas de penetración provocan errores en el servidor. Es común cerrar un servidor, obtener credenciales administrativas (y luego cerrar el servidor desde dentro) o interrumpir a los usuarios.

La prevención de debilidades de seguridad requiere un conjunto de habilidades ligeramente diferente. El diseño y la codificación defensiva es un tema que también se discute en libros y OWASP.

Así que, en resumen estoy preguntando por web de seguridad general, la forma de "hackear" y cómo prevenir. ¿Podría guiarme a algunos recursos? ¿Y tiene punteros (ya sea por experiencia o por opinión personal )?

Además, si soy un pirata informático: ¿Cuál es la forma más rápida de eliminar un sitio ?

Microsoft ofrece este consejo programación defensiva: http://msdn.microsoft.com/en-us/library/aa302420.aspx

soy parcial a este libro como una práctica en la web de guía de pruebas de seguridad: http://www.amazon.com/Web-Security-Testing-Cookbook-Systematic/dp/0596514832

3

Ver este fantástico tutorial about security. Tenga en cuenta que esto es desde la perspectiva de PHP, pero la idea principal debe ser la misma para todos los problemas de seguridad web.

En cuanto a encontrar a cabo la vulnerabilidad en sus sitios web, nos encontramos con este software para ser realmente bueno:

Acunetix Web Security Scanner

1

En una perspectiva amplia, seguridad web no sólo abarcan la tecnología de software, sino también otra áreas como la ubicación física de su servidor web, si se otorgan permisos adecuados a los usuarios autorizados para el acceso físico hasta el software que ejecuta el servidor, por ejemplo, el sistema operativo, la tecnología web, por ejemplo, PHP, Apache, Javascript, etc. Tendrán que saber al menos un poco de todos estos lenguajes/software para hablar seriamente sobre la seguridad web. Además, no todos los servidores web usan PHP, algunos usan Perl, python, mientras que otros ejecutan Ruby, Java, etc. ¿Cómo prevenir las vulnerabilidades? Si comprende los agujeros del bucle de programación del idioma que utiliza y hace todos los esfuerzos para realizar verificaciones de cordura, actualiza los parches del sistema operativo, realiza los controles de acceso adecuados en términos de seguridad física, etc., puede decir que ganó más de la mitad de la batalla. El resto será la diligencia debida y contar y educar a las personas sobre la seguridad y su importancia.

1

Es un tema muy amplio y libros enteros se han escrito sobre él.

Un servidor web, por definición, debe responder a solicitudes HTTP (conexiones TCP sobre el puerto 80). También puede tener que responder a solicitudes HTTP/SSL (conexiones TCP a través del puerto 443). Por supuesto, es posible ejecutar estos servicios en otros puertos; pero los servidores web de acceso público casi todos están configurados de acuerdo con esos estándares.

¿Cuáles son los tipos de problemas de seguridad que puede imaginar? Generalmente pueden ser vulnerabilidades en el código del servidor web (daemon) (por ejemplo, Apache), en cualquiera de los módulos cargados por él (por ejemplo, mod_php), en algunos de los contenidos dinámicos (scripts CGI ejecutados por el servidor web, Java , motores de aplicaciones, etc.) o en otra cosa que se ejecuta en el servidor (daemons SSH, agentes de administración SNMP, etc.).

Además, algunos problemas pueden estar más allá de su propio servidor. Por ejemplo, si está procesando datos suministrados por usuarios, existe el riesgo de que cualquier enrutador o enlace entre sus usuarios y su servidor pueda espiar para datos privados o confidenciales.Incluso si procesa estos a través de SSL puede tener problemas con los usuarios que son redirigidos a otros sitios y ser engañados para que proporcionen esos datos a este "MITM" (man-in-the-middle). Además, cualquier contenido proporcionado por los usuarios y que se muestra a otros (comentarios en wikis, blogs, foros de mensajería, etc.) puede ser vulnerable a una variedad de exploits "cross-site scripting" (XSS). Un atacante puede inyectar entradas falsas en varios servidores DNS a los que los usuarios confían en su sitio (envenenamiento de caché DNS, por ejemplo).

Realísticamente, la mayoría de los problemas modernos que están bajo su control son los relacionados con XSS o la inyección SQL (casos en los que su contenido dinámico almacena y recupera implícitamente datos de un DBMS, como MySQL, y cualquiera de sus los intentos de desinfectar las entradas de los usuarios son inadecuados ... donde los datos del usuario se pasan al DBMS como un código SQL y se ejecutan allí).

Esos son los tipos de problemas que son relevantes para los programadores. La mayoría de los problemas con el sistema operativo, el software de servidor, etc. son de mayor interés para los administradores de sistemas.

6

Además, si soy pirata informático: ¿Cuál es la forma más rápida y sencilla de eliminar un sitio?

Respuesta: Google. Tenga en cuenta que derribar cualquier sitio web es mucho más fácil que eliminar un sitio específico. La mayoría de los ataques son cometidos por un pequeño número de piratas informáticos que atacan a un gran número de servidores, y al pirata informático no le importa cuál rompe, sino que el pirata informático se divide en uno o más. Hay sitios web que ya han sido pirateados. El hacker ha instalado una puerta trasera similar a c99shell.php, Google puede indexar estas puertas traseras y luego las personas pueden buscarlas.

Otro enfoque para el pirateo de Google es encontrar todas las copias de una pieza vulnerable de software. Supongamos que llega un exploit a la web que afecta a vBulletin 3.8.4 y siguientes. Puedo hacer una búsqueda en Google de "Desarrollado por vBulletin® Versión 3.8.4" y encontrar casi todas las copias de esta versión de vBulletin en la web.

Para responder a su pregunta: Exploit Code se utiliza para entrar en sitios web, y los hackers lo encuentran usando Google.

Muchos de estos exploits de aplicaciones web están aprovechando vulnerabilidades descubiertas utilizando herramientas de prueba gratuitas y de código abierto como Wapiti, w3af, o quizás el costoso producto comercial Acunetix.

0

Este curso de vídeo libres de pro seguridad Troy Hunt es un excelente lugar para comenzar. Se le enseña sobre los 5 mejores riesgos de seguridad web (según OWASP) y le guía a través de la mecánica de cada vulnerabilidad (XSS, inyección SQL, etc.) y habla de medidas defensivas:

Web Security Fundamentals Video Course

2

Aquí están algunas cosas para la seguridad del sitio web, especialmente las que deben seguir tanto los principiantes como los desarrolladores web avanzados.


 #15 Steps To Secure Your Website 

1: Prevenir hotlinking de imágenes (IMP)

imagen hotlinking es el proceso de utilización de otra persona URL de la imagen en nuestra página web y el uso de su ancho de banda. Para evitar este misterio, podemos evitar el acceso al servidor externo agregando la siguiente línea en el código.

RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC] 
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L] 

2: Prevenir CSRF (Cross Site Request Falsificación) ataca

Con el fin de prevenir los ataques CSRF en su GET y POST peticiones para el envío del formulario, puede utilizar las siguientes técnicas 2.
El primero en incluir un token aleatorio con cada solicitud, esta es una cadena única que se genera para cada sesión.
El segundo método es usar nombre aleatorio para cada campo de formulario.

3: Prevención de acceso a directorios/Inhabilitar la indexación

Añadir la siguiente línea a su archivo .htaccess.

Options -Indexes 

4: Asegure su privado y CMS Entrar con restricciones de IP

restricción de IP es una forma poco avanzado método pero eficaz para detener las personas no autorizadas a acceder a un área particular de su sitio web. Aquí hay un código htaccess de ejemplo para restringir el acceso a una ubicación en particular.

ALLOW USER BY IP 
<Limit GET POST> 
order deny,allow 
deny from all 
allow from 1.2.3.4 
</Limit> 

5: Proteja su archivo .htaccess

Puede escribir esto más adelante pieza de código en el archivo .htaccess que no deje que los otros tengan acceso a su archivo .htaccess.

<Files ~ “^.*.([Hh][Tt][Aa])”> 
order allow,deny 
deny from all 
satisfy all 
</Files> 

6: Función de regla de acceso

Mediante la adición de "_" como un prefijo para el nombre de la función, podemos evitar la función a ser llamada desde la Web públicamente. Esta es la mejor práctica cuando necesitamos acceder a alguna función específica solo a través de AJAX.

7: Cierren sus permisos de archivos y directorios

Los permisos de archivo definen quién puede hacer qué en un archivo.
"Leer" = 4: Ver los contenidos del archivo.
"Escribir" = 2: Cambie el contenido del archivo.
"Ejecutar" = 1: Ejecuta el archivo de programa o la secuencia de comandos.

8: Prevenir Cron Job para ser ejecutado desde un navegador Web

Al añadir, siguiendo la línea de código en su página, usted puede proteger su página que se accede desde un navegador web.

if(! $this->input->is_cli_request()) { 
      die("Only CLI Requests Allowed"); 
} 

9: Ocultar las páginas de administración de Google rastree los

Usted no quiere que sus páginas de administración para ser indexados por los motores de búsqueda, por lo que debe utilizar el archivo ROBOTS_TXT para disuadir a los motores de búsqueda de la lista de ellos.

10: Desactivar Haga clic derecho en la página si no requiere

Desactivación de “clic derecho” como una manera de ver su sitio web el código fuente por el elemento para asegurar Contenido del sitio web para los usuarios generales inspeccionar.

11: El uso de contraseñas seguras para el CMS

práctica Keep para establecer contraseña aleatoria con sólo el carácter especial.

12: Hacer directorio admin Es difícil de adivinar

Puede suceder que los hackers pueden utilizar secuencias de comandos que escanean todos los directorios en su servidor web para los nombres de regalo como 'admin' o 'iniciar sesión', etc. y sus cosas significativa puede filtrarse

13: Cambiar el prefijo de tabla de base de

Añadir un prefijo (la mezcla del nombre del proyecto y año) que sería difícil presumir de un lado seguro.
Para ilustrar,
A) BPM Supremo => bpm14_download
B) Glickin => gk15_admin
C) TravelWorthy => tw16_user

14: Prevenir contraseña del usuario, que es tan importante como la suya

En cuanto Algoritmo de encriptación de contraseña, use el algoritmo sha1 en lugar del algoritmo tradicional Md5, que es el método más antiguo y cada vez menos seguro según las fuentes.
Referencia: http://php.net/manual/en/function.sha1.php

15: Ocultar registro de errores

Durante el modo de desarrollo, mantener el informe de errores "ALL" y una vez que vayamos cambio VIVO a "0", sin olvidar. Por aquí
Referencia: http://php.net/manual/en/function.error-reporting.php

+1

** Punto 6. ** Inútil. Con una herramienta de proxy/red web, puede capturar solicitudes AJAX y enviarlas sin el encabezado 'HTTP_X_REQUESTED_WITH'. El prefijo '_' no hace nada. ** Punto 8. ** Esto es una copia y pega de algo que no todos tendrán. No todos tendrán el mismo método 'is_cli_request()'. ¿Puedes suministrar este método? ** Punto 10. ** Absolutamente inútil. [No deshabilite el clic derecho] (https://www.sitepoint.com/dont-disable-right-click/). ** Punto 13. ** Inútil. Si alguien puede SQLi para agarrar el 'information_schema' o incluso ejecutar' SHOW TABLES; ' –

+0

** Punto 14. ** ¿Por qué? SHA1 es un resumen de mensaje, nunca fue una función de hash de contraseña (o de derivación de clave). Consulte ['password_hash()'] (http://php.net/manual/en/function.password-hash.php) para obtener una solución. –

+0

# 6: es mejor tener algo que nada. # 8: Vaya, ese es el fragmento de un Framework. Por favor, no hagas caso. En el núcleo de PHP, podemos hacer coincidir el parámetro HTTP_USER_AGENT de $ _SERVER. # 10: Esto simplemente detiene la copia de su contenido web. # 13: Ver, nuevamente se trata del experto técnico avanzado. Al considerar esto, hay menos posibilidades de pérdida de datos. –

Cuestiones relacionadas