La Same-Origin Policy (SOP) es una característica de seguridad crítica implementada en todos los navegadores web modernos. Su propósito principal es prevenir interacciones maliciosas entre diferentes orígenes (origins). Un 'origen' se define por la combinación de protocolo (e.g., HTTP, HTTPS), host (e.g., www.example.com, sub.example.com) y puerto (e.g., 80, 443). Si dos URLs comparten el mismo protocolo, host y puerto, se consideran del mismo origen. La SOP restringe la capacidad de un script cargado desde un origen para leer o modificar el contenido de otro origen, protegiendo así la confidencialidad e integridad de los datos del usuario.
La SOP es una piedra angular de la seguridad web y se aplica de forma predeterminada en todos los navegadores como Chrome, Firefox, Safari y Edge. Por ejemplo, si un usuario está conectado a su banco en 'bank.com' y simultáneamente visita una página maliciosa en 'evil.com', la SOP impide que un script en 'evil.com' acceda a las cookies, el DOM o los datos de respuesta de las peticiones AJAX realizadas a 'bank.com'. Sin embargo, existen excepciones controladas a la SOP, como Cross-Origin Resource Sharing (CORS), que permite a los servidores especificar explícitamente qué orígenes tienen permiso para acceder a sus recursos, y JSONP (aunque menos recomendado hoy en día), que explota la excepción de la SOP para etiquetas <script>.
Para un arquitecto de sistemas, comprender la Same-Origin Policy es fundamental para diseñar aplicaciones web seguras y robustas. Ignorar la SOP puede llevar a vulnerabilidades graves como Cross-Site Request Forgery (CSRF) o fugas de información. Al diseñar APIs, es crucial configurar correctamente los encabezados CORS para permitir el acceso legítimo desde front-ends específicos, mientras se bloquea el acceso no autorizado. La decisión de relajar la SOP (vía CORS) debe ser siempre consciente y justificada, evaluando el trade-off entre la interoperabilidad y la superficie de ataque. Un diseño cuidadoso de la arquitectura de microservicios y la gestión de dominios/subdominios también debe considerar cómo la SOP afectará la comunicación entre componentes y la exposición de datos.