Si la aplicación provee una API, las mismas validaciones realizadas a los datos ingresados por interfaz web deben ser aplicados.
Se deben tomar las medidas pertinentes, por ejemplo codificación, al incrustar datos recuperados desde alguna fuente y que son insertados en un contexto determinado.
La fuente puede ser de almacenamiento, ficheros, otros sitios web, etc.
Cuando se sanitizan datos, se están modificando. Así, múltiples datos distintos pueden llegar a ser un mismo dato post-sanitización.
En funciones relacionadas con validación, la sanitización debe ser alertante y no modificante.
Las validaciones no solo deben ser aplicadas cuando los datos son ingresados a la aplicación, ya que muchas veces los datos puede que no provengan de solo un caso de uso analizado.
Las validaciones tienen que ser pensadas como parte del flujo normal de la aplicación, sin caer en malas prácticas (DRY).
Cada componente que forma parte del stack tecnológico de la aplicación, tanto en el lado del cliente como en el lado del servidor, deben ser revisado continuamente por si se han publicado problemas de seguridad.
Es importante preocuparse de cada subdominio perteneciente al dominio, ya que vulnerabilidades en uno pueden incidir en la seguridad de otros.
Es recomendable no dejar servidores de testing, staging, QA accessibles a Internet.
En un proyecto una decisión muy importante es el lenguaje de programación a usar. Uno de los múltiples factores debe ser su "seguridad" (en sí y su uso).
Es necesario informarse sobre el historial de seguridad y el estado del arte sobre las formas de explotación de diversas vulnerabilidades en el lenguaje.
Cada tecnología (lenguaje, servicio, etc) puede tener comportamientos inesperados, respuestas impensables o situaciones dadas por diferentes situaciones.
Es aconsejable compartir este conocimiento dentro del equipo para que no se basen en el conocimiento previo de una tecnología semejante y traten de extrapolar situaciones.
La serialización de datos en formato binario no es perjudicial, el problema es cuando los datos a deserializar los provee el usuario.
Es aconsejable evitar estas situaciones o usar serialización en otros formatos como Json.
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License.