2009-02-04 11 views
6

Cuál es su debe tener métodos de defensa a los ataques web comunes como XSS, SQL Injection, denegación de servicio, etc.?ataques a aplicaciones web y debe tener métodos de defensa

Edit: He recogido sus respuestas en descripciones de Wikipedia. Y añado algunas preguntas adicionales para tener una referencia completa.

Sql Injection

inyección SQL es un técnica de inyección código que explota una vulnerabilidad de seguridad que ocurre en la capa de base de datos de una aplicación. La vulnerabilidad está presente cuando el usuario de entrada es incorrectamente filtró cadena de caracteres de escape literales incrustados en las instrucciones SQL o la entrada del usuario no está fuertemente tipado y ejecutado de este modo de forma inesperada. Es una instancia de una clase más general de vulnerabilidades que pueden ocurrir cuando una programación o scripting idioma está incrustado dentro de otro.

  • No confíe en la entrada del usuario y validar que tan pronto como sea posible.
  • No cree SQL a partir de la entrada de usuario sin formato; use parámetros en su lugar.

Cross Site Scripting (XSS)

Cross-site scripting es un tipo de vulnerabilidad de seguridad equipo se encuentran típicamente en aplicaciones web que permiten la inyección de código por los usuarios de Internet maliciosos en el páginas web vistas por otros usuarios. Los ejemplos del código incluyen código HTML y scripts del lado del cliente. Una vulnerabilidad de vulnerabilidad de scripts entre sitios explotados puede ser ser utilizada por los atacantes para eludir los controles de acceso como la misma política de origen .

  • Nunca salida o ejecutar el contenido enviado por los usuarios pie de la letra.
  • HTML-codifica toda la salida.

Un ataque de denegación de servicio

Un ataque de denegación de servicio (DoS ataque) o distribuido ataque de denegación de servicio (ataque DDoS) es un intento para hacer que un recurso de computadora no esté disponible para los usuarios previstos de .Aunque los medios para llevar a a cabo, los motivos para, y los objetivos de un ataque DoS puede variar, generalmente consiste de los esfuerzos concertados y malévolas de una o varias personas para prevenir un sitio internet o servicio de funcione eficiente y en absoluto, temporal o indefinidamente.

Sé que parece imposible evitar los ataques de denegación de servicio mediante programación, pero ¿qué opinas?

fuerza bruta Ataques

En el criptoanálisis, un ataque de fuerza bruta es un método de derrotar a un esquema criptográfico de forma sistemática tratar un gran número de posibilidades ; por ejemplo, un número grande de las claves posibles en un espacio de clave para descifrar un mensaje. En la mayoría de los esquemas, la posibilidad teórica de un ataque de fuerza bruta es reconocida, pero está configurada de manera tal que sería computacionalmente imposible de llevar a cabo.

  • bloquear una cuenta cada vez demasiados intentos de conexión que salió mal. Nunca permita reintentos ilimitados.
  • Agregue un retraso cuando la contraseña introducida sea incorrecta.

Algunas preguntas adicionales:

  • ¿Que opinas sobre robots web que tratan de publicar entradas de acuerdo a su contenido? Por ejemplo SO está usando una validación de imagen.

  • ¿Qué opinas sobre javascript eval function?

  • ¿Hay alguna manera de acceder al contenido del servidor que no estuvo expuesto al exterior? Por ejemplo, tengo una página que inserta algunos registros importantes en mi base de datos, y solo sé que es url. ¿Hay alguna manera de obtener este tipo de archivos? Sé que puedes establecer algunas reglas de seguridad sobre eso.

(NOTA: listado de directorio está desactivada y que la sede de este archivos.)

Gracias por las respuestas!

Respuesta

1

Validación!

1

Lo más importante es evitar el forzamiento bruto de las contraseñas. Así de simple, agregando un retraso cuando la contraseña introducida es incorrecta.

+0

Supongo que no significa necesariamente un retraso en la página devolviendo el mensaje de "contraseña incorrecta", pero bloqueando la cuenta por un período de tiempo? Un retraso en la carga de la página no les impedirá revisar muchas páginas en paralelo (tal vez desde diferentes direcciones IP). – rmeador

+0

Puede retrasar la página devolviendo el mensaje de contraseña incorrecta, siempre que lo haga para todos los intentos de iniciar sesión con un nombre de usuario dado, y restablecer el retraso en un inicio de sesión exitoso. –

+0

@rmeador: correcto, ese retraso no tiene que ser largo. Es suficiente tener un retraso de 1 segundo. (Aumenta si la contraseña es incorrecta varias veces.) –

3

Para inyección XSS y SQL: nunca muestre o ejecute textualmente el contenido enviado por el usuario.

7

Su pregunta abarca un alcance grande. Trataré de darte algunos consejos.Si especifica su pregunta más claramente, puedo darle información más específica.

  1. Nunca, nunca confíe en la entrada del usuario. Todo lo que entra en su aplicación que puede ser manipulado desde el exterior, debe ser validado.
  2. Nunca almacene contraseñas en texto sin formato en su base de datos. Guarde el hash (con sal) solamente. Calcule el hash en la contraseña que el usuario entregó y compare los valores hash.
  3. Bloquea una cuenta cada vez que demasiados intentos de inicio de sesión salieron mal. Nunca permita reintentos ilimitados.
  4. Al usar un producto o marco, manténgase en la parte superior de la lista de correo para esos productos y identifique los problemas de seguridad. Cuando su marco subyacente tiene una falla de seguridad, tenga un plan listo para actualizar.
  5. Al utilizar una base de datos, no permita que todos tengan acceso completo a la base de datos (incluso si limita el acceso a la base de datos con los procedimientos almacenados). Si alguien solo necesita leer ciertos datos, no use una cuenta SQL que también pueda modificar datos.
  6. En relación con su pregunta: "¿Hay alguna manera de acceder al contenido del servidor que no estuvo expuesto al exterior. Por ejemplo, tengo una página que inserta algunos registros importantes en mi base de datos y solo sé que es url. ¿Hay alguna manera de obtener este tipo de archivos? Sé que puedes establecer algunas reglas de seguridad sobre él ".
    Puede pensar que alguien no puede acceder a su página simplemente porque no conoce la URL. Esto es security through obscurity y nunca funcionará a largo plazo. La araña de índice de Google simplemente intentará recorrer todo el sitio e indexar cada página a la que pueda acceder. Si tiene páginas con información confidencial, agregue un mecanismo de autenticación y autorización.
+0

Gran respuesta Sardauker - +1 –

+0

gs menciona esto a continuación, pero en 3, los intentos se deben retrasar progresivamente frente al número de intentos fallidos. Esto evita que un ataque automatizado bloquee todas sus cuentas. – Flory

1

se utiliza una herramienta llamada fortificar a escanear nuestro software http://www.fortify.com/ (producto comercial lo siento, pero tal vez hay más)

Capta la entrada del usuario que no está validado, la concatenación de cadenas en lugar de parámetros y mucho más.

Solo con probar este producto puede aprender cómo programar de forma segura.

2
  • Validate todo tan pronto como sea posible.
  • No cree SQL a partir de la entrada de usuario sin formato; use parámetros en su lugar.
  • HTML-encode todos salida.
0

¿Qué piensas de los robots web que intentan publicar entradas según tu contenido? Por ejemplo SO está usando una validación de imagen.

La validación de la imagen se llama CAPTCHA. Impide que los bots automatizados llenen formularios y ayuda a verificar que un humano realmente está enviando el formulario. Estos se usan generalmente en cualquier lugar donde desee controlar el acceso al formulario. Los bots de spam intentarán completar los formularios de contacto para eludir los filtros de correo no deseado, por lo que es posible que deba agregar alguna protección en este tipo de cosas. En su mayor parte, el abuso de forma es mínimo, pero lo verá en algunos casos.

¿Qué opinas sobre javascript eval function?

Depende de cómo lo use. Como cualquier otra cosa, no confíe en la entrada del usuario. Si vas a ejecutar su entrada a través de eval(), asegúrate primero de ejecutar un proceso de saneamiento decente. Esto es doblemente importante si está almacenando su entrada en una base de datos y retirándola para mostrarla a otros usuarios. Eso vale para SQL, HTML y JavaScript. Si alguien puede obtener código JS ejecutado con suficiente conocimiento sobre cómo funciona su sitio, puede hacer todo tipo de cosas locas e imitar al usuario que está conectado, cambiar su contraseña, etc.

¿Hay alguna manera de acceder al contenido en el servidor que no estuvo expuesto al exterior?

Como alguien más mencionó, esto sería la seguridad a través de la oscuridad y no es recomendable. Cualquier cosa sensible debe colocarse detrás de un área de inicio de sesión segura. No confíe únicamente en la "URL oculta". Si alguien adivina su URL especial o termina en un archivo de registro al que Google tiene acceso, es posible que nunca sepa si alguien logra ingresar. Ponga un poco de autenticación sobre cosas así.

Cuestiones relacionadas