Lo mejor es mirar la lista de los 10 principales riesgos de seguridad de OWASP:
https://github.com/OWASP/Top10/r…
Lo primero que notará es que son independientes del lenguaje de programación.
- ¿Qué sucede con el antivirus cuando instalamos otro sistema operativo en nuestra computadora portátil?
- ¿Cuál es el mejor software antivirus y de detección de malware gratuito para Windows en 2016 y por qué?
- ¿Es seguro usar Baidu Antivirus con el motor Avira Antivirus ya que he oído que las empresas tecnológicas chinas espían a sus usuarios y también permiten que el gobierno chino espíe a los usuarios?
- ¿Cómo se puede formular OWASP a diez riesgos como requisito de software?
- ¿Cuál es el mercado objetivo para la startup que ofrece pruebas de penetración y servicios de consultoría de seguridad de TI?
Ni PHP ni Java son más seguros que otro, realmente. Es su aplicación la que será su principal riesgo, su entorno de servidor, los parches del sistema operativo.
La seguridad es muy, muy difícil de corregir. Desafortunadamente, no puedes hacerlo simplemente eligiendo un idioma. Es un tema mucho más amplio.
Para entrar en la mentalidad correcta, mira el número uno de OWASP. Inyecciones Comience asegurándose de que ninguna parte de su aplicación pueda tener un ataque de inyección SQL / HQL / JavaScript contra ella.
Por ejemplo, convierta en una regla de desarrollador que el acceso a la base de datos SQL * debe * hacerse solo a través de declaraciones preparadas.
Ahora ha detenido un vector de amenaza de seguridad. Hasta que alguien más en su equipo cambie el código de su aplicación y se olvide. Quizás podría usar algo como PMD para buscar palabras clave reveladoras que muestren que esto no se ha hecho.
Pero esta es la escala del desafío que implica mantener las aplicaciones seguras.
Algunos consejos diarios que pienso mientras codifico son:
- Lista blanca
- acceso restringido
- evitar técnicas inseguras conocidas
- escapar
- nunca confíes en la entrada del usuario
- revalidar siempre en el servidor
Pero no tengo la ilusión de que solo, eso no es suficiente.
Vi una demostración de un tipo con una aplicación web de prueba que extrae toda la base de datos de un formulario de inicio de sesión. Solo tenía los campos de nombre de usuario y contraseña.
Al medir el tiempo de respuesta y deliberadamente generar errores en la base de datos, fue capaz de extraer todo el esquema y cada fila de cada tabla, a través de ese formulario.
Peor aún: todo eso se hizo con una herramienta de código abierto, automáticamente, en menos de cinco segundos.
De miedo.