esta pregunta se puede asociar a una pregunta subjetiva, pero esta no es realmente una.Actitud paranoica: ¿Cuál es su grado acerca de las preocupaciones de seguridad web?
Cuando desarrolla un sitio web, hay varios puntos que debe saber: ataques XSS, inyección de SQL, etc. Puede ser muy difícil (y tomar un largo tiempo para codificar) proteger todos los ataques potenciales.
Siempre trato de proteger mi aplicación, pero no sé cuándo detenerla.
Tomemos el mismo ejemplo: una red social como Facebook. (. Debido a un sitio web banco debe asegurar todos sus datas)
veo algunos enfoques:
No asegure XSS, inyección SQL ... Esto puede ser hecho en realidad cuando confía en tu usuario: volver final para una empresa privada. ¿Pero seguro este tipo de aplicación?
Ataques seguros solo cuando el usuario intenta acceder a datos no pertenecientes: este es el mejor método para mí.
Asegure todos, todos, todos: Protege todos los datos (propietario o no): el usuario no puede romper sus propios datos y otros datos de usuario: esto es muy largo de hacer y ¿es muy útil?
Ataques comunes seguros, pero no aseguran ataques muy duros (porque es demasiado largo para comparar código con la posibilidad de ser pirateado).
Bueno, no sé realmente qué hacer ... Para mí, trato de hacer 1, 2, 4, pero no sé si es la gran opción.
¿Existe un riesgo aceptable de no proteger todos sus datos? ¿Puedo asegurar todos los datos, pero me lleva el doble de tiempo codificar? ¿Cuál es el enfoque empresarial entre el riesgo y "el tiempo es dinero"?
Gracias por compartir esto porque creo que muchos desarrolladores no saben cuál es el límite.
EDIT: Veo muchas respuestas sobre XSS y inyección SQL, pero esto no es lo único que se debe tener en cuenta.
Tomemos un foro. Un hilo se puede escribir en un foro donde somos moderadores. Por lo tanto, cuando envía datos a la vista del cliente, agrega o elimina el botón "agregar" para este foro. Pero cuando un usuario intenta guardar un hilo en el lado del servidor, debe verificar que el usuario tenga derecho a puntearlo (no puede confiar en la seguridad de la vista del cliente).
Este es un ejemplo muy simple, pero en algunas de mis aplicaciones, tengo una jerarquía de derechos que pueden ser muy muy difícil de comprobar (se necesita una gran cantidad de consultas SQL ...) pero en otro lado, es realmente difícil encontrar el truco (los datos se pseudocifran en la vista del cliente, hay una gran cantidad de datos que modificar para que el pirateo se ejecute, y el hacker necesita una buena comprensión de las reglas de mi aplicación para hacer un truco): en este caso , ¿puedo verificar solo los agujeros de seguridad de la superficie (pirateo realmente fácil) o puedo verificar los agujeros de seguridad muy difíciles (pero disminuirá mi rendimiento para todos los usuarios, y me lleva mucho tiempo desarrollarlos).
La segunda pregunta es: ¿Podemos "confiar" (para no desarrollar un código largo y difícil que disminuya el rendimiento) en la vista del cliente para un hackeo muy difícil?
Aquí hay otro post hablando de este tipo de corte: (hibernación y la comprobación de colección) Security question: how to secure Hibernate collections coming back from client to server?
debería ser wiki de la comunidad – SilentGhost