Comencemos por definir el término origen. El origen de una página se decide por tres factores únicos: nombre de host, protocolo y número de puerto. Por ejemplo, http://test.com
y https://test.com
tienen orígenes diferentes ya que el protocolo es diferente. De manera similar, http://one.test.com
y http://two.test.com
tienen orígenes diferentes, ya que los nombres de host son diferentes. La propiedad de origen también es diferente para dos servicios que se ejecutan en el mismo host con diferentes números de puerto, por ejemplo. http://test.com:8081
y http://test.com:8082
se consideran diferentes orígenes.
Same Origin Policy (SOP) es un control de seguridad a nivel de navegador que determina cómo un documento o script que pertenece a un origen puede interactuar con recursos de otro origen. Básicamente, evita que los scripts que se ejecutan en un origen puedan leer datos de otro origen .
Las solicitudes de dominios cruzados y los envíos de formularios todavía están permitidos, pero no se permite la lectura de datos de otro origen. Esto significa que si está realizando un ataque CSRF en un sitio vulnerable que provoca un cambio de estado en el lado del servidor (por ejemplo, la creación de un usuario, la eliminación de documentos, etc.), el ataque será exitoso pero no podrá leer la respuesta.
En resumen, el SOP solo impide leer datos que se sirvieron desde un origen diferente. No cubre los envíos de formularios de dominios cruzados que se utilizan para llevar a cabo un ataque CSRF.
En lo que respecta a la realización de comunicación entre dominios utilizando AJAX, existen algunos otros controles de seguridad que dictan la comunicación. Consulte Intercambio de recursos de origen cruzado . CORS permite que diferentes orígenes se comuniquen y compartan datos de una manera controlada y una mala configuración de CORS también puede dar como resultado vulnerabilidades de seguridad .
Tenga en cuenta que SOP no impide que los recursos alojados en diferentes dominios se incrusten en una página mediante el uso de etiquetas de script, CSS y etiquetas de imagen. Si bien esto podría no permitir una lectura directa de los contenidos, los efectos secundarios de la carga y la representación se pueden usar para determinar (partes de) el contenido. Tenga en cuenta también que los SOPs web no están cubiertos por SOP y, por lo tanto, es posible la lectura entre sitios.
P.S. Tomado de mi blog .