Vermeiden Sie CSRF-, XSSI- und Cross-Origin-Informationslecks.


Aktualisiert

Es erscheint in:
Gesichert und geladen

Warum sollten Sie sich Gedanken über die Isolierung Ihrer Webressourcen machen?

Viele Webanwendungen sind anfällig für Cross-Origin-Angriffe wie z Cross-Site-Request-Spoofing (CSRF), Cross-Site-Scripting (XSSI), Zeitangriffe, Ursprungsübergreifende Informationslecks oder Kanal¿Qué es un canal?Es un punto de contacto entre la marca y sus públicos en la web. Pueden ser blogs, vídeos, comentarios en artículo, imágenes, contactos en redes sociales o cualquier otra forma de interacción de la web 2.0. Plus lateral de ejecución especulativa (Spektrum) Anschläge.

Metadaten abrufen Das ÜberschriftenConcepto de Encabezados¿Qué son los Encabezados?Los Encabezados, además conocidos como headers en inglés, son una parte fundamental del diseño de cualquier web, dado que consiste en la parte principal que se ve de esta al acceder, la parte de arriba de cualquier página. El lugar más visible y al que todos los usuarios que visitan un lugar de Internet acceden cuando entran en él, pudiendo tener así una imagen rápida Plus de solicitud le permiten implementar un sólido mecanismo de defensa en profundidad, una política de aislamiento de recursos, para proteger su aplicación contra estos ataques comunes de origen cruzado.

Es común que los recursos expuestos por una determinada aplicación web solo los cargue la propia aplicación y no otros sitios web. En tales casos, la implementación de una política de aislamiento de recursos basada en los encabezados de solicitud de obtención de MetadatenLos metadatos son datos estructurados que contienen información sobre una fuente como, por ejemplo, un libro o un documento web. Gracias a los metadatos resulta mucho más fácil hallar la fuente de información dado que contienen datos sobre el título, el autor, la fecha de publicación, la descripción, etc. Se utilizan en librerías pero además para la estadística y la ingeniería de software. Metadatos en WWW Los metadatos se utilizan Plus requiere poco esfuerzo y, al mismo tiempo, protege la aplicación de ataques entre sitios.

Compatibilidad del BrowserUn navegador (además: browser) es una herramienta informática que te permite ver documentos y datos y navegar por la red. Los navegadores pueden mostrar distintos tipos de recursos de información; principalmente documentos HTML, a pesar de todo, además son posibles otros tipos de archivos y contenido multimedia, como PDF, JPEG, MPEG, GIF o el lenguaje de meta marcado. A través el uso de complementos especiales y la configuración respectivo, los Plus

Los encabezados de solicitud de obtención de metadatos se admiten a partir de Chrome 76 y en otros BrowserConcepto de Navegadores¿Qué son los Navegadores?Los Navegadores son herramientas informáticas que utilizamos para, normalmente, navegar por Internet y visitar cualquier página web, al mismo tiempo de para hacer otras tareas como ver documentos, observar vídeos o reproducir contenido multimedia de cualquier tipo. Son un tipo de software sencillamente usual y bastante utilizado hoy en día.Insistimos en que es algo que se utiliza con mucha frecuencia, puesto que moverse por Internet Plus basados ​​en Chromium, y están en desarrollo en Firefox. Ver Browser-Kompatibilität Aktuelle Informationen zur Browserkompatibilität.

Hintergrund

Muchos ataques entre sitios son posibles porque la web está abierta de forma predeterminada y su ServerLos servidores son ordenadores centrales y potentes dentro del campo de la tecnología de la información que procesan y proporcionan software y archivos en una red. Desde el punto de vista de un cliente, varios ordenadores en una red pueden ponerse en contacto con el servidor central para conseguir la información solicitada. En la arquitectura cliente-servidor, el servidor puede ser un software que proporciona un servicio y se ejecuta en Plus de aplicaciones no puede protegerse fácilmente de la comunicación que se origina en aplicaciones externas. Un ataque típico de origen cruzado es la falsificación de solicitudes entre sitios (CSRF), en la que un atacante atrae a un usuario a un sitio que controla y luego envía un formulario al servidor en el que el usuario está conectado. Dado que el servidor no puede saber si la solicitud se originó en otro DomainUn dominio es una sección de Internet con direcciones que comparten un sufijo común o están bajo el control de una organización o individuo en particular. Está organizado jerárquicamente. Tanto los objetos físicos como los virtuales pueden ser direccionados con el nombre de dominio. Estos objetos pueden ser webs, ordenadores en red o servicios, como impresoras, faxes o servidores de correo. Cada objeto está referenciado por una dirección IP única, Plus (entre sitios) y el navegador adjunta automáticamente cookies a las solicitudes entre sitios, el servidor ejecutará la acción solicitada por el atacante en nombre del usuario.

Otros ataques entre sitios, como la inclusión de SkripteConcepto de Scripts¿Qué son los Scripts?Los Scripts son fragmentos de código que se usan para dar forma a herramientas tanto en Internet como en el sector de la informática en general. Son una parte crucial del software, puesto que se trata exactamente del código que conforma a una aplicación en su totalidad o a una de sus funciones, como además el que puedes hallar explorando cómo está hecha una web.Desde Plus entre sitios (XSSI) o las fugas de información de origen cruzado, son de naturaleza similar a CSRF y dependen de la carga de recursos de una aplicación de la víctima en un documento controlado por el atacante y de la filtración de información sobre las aplicaciones de la víctima. Dado que las aplicaciones no pueden distinguir fácilmente las solicitudes confiables de las no confiables, no pueden descartar el tráfico malicioso entre sitios.

Fallstricke!

Abgesehen von den oben beschriebenen Ressourcenangriffen Fensterreferenzen Dies kann auch zu Ursprungsinformationslecks und Spectre-Angriffen führen. Sie können sie verhindern, indem Sie die Cross-Origin-Opener-Policy Antwortheader an gleicher Herkunft.

Einführung in Fetch Metadata

Los encabezados de solicitud de Fetch Metadata son una nueva característica de seguridad de la plataforma web diseñada para ayudar a los servidores a defenderse contra ataques de origen cruzado. Al proporcionar información sobre el contexto de una solicitud HTTPEl HTTP (Hyper Text Transfer Protocol) es un protocolo que se usa para transmitir datos en redes. HTTP es un estándar técnico generalmente aceptado que establece cómo un cliente web se comunica con un servidor para que los datos solicitados por el cliente puedan ser cargados y mostrados. Información general Junto con el URL y el HTML, HTTP es uno de los conceptos más importantes de Internet (www). Fue desarrollado Plus en un conjunto de Sec-Fetch- * Ermöglichen Sie dem antwortenden Server, vor der Verarbeitung der Anforderung Sicherheitsrichtlinien anzuwenden. Auf diese Weise können Entwickler anhand der Art und Weise, in der sie gestellt wurde, und des Kontexts, in dem sie verwendet wird, entscheiden, ob sie eine Anfrage annehmen oder ablehnen. So können sie nur auf legitime Anfragen ihrer eigenen Anwendung antworten.

Gleicher Ursprung

Anfragen, die von Websites stammen, die von Ihrem eigenen Server (demselben Ursprung) bedient werden, funktionieren weiterhin.

Same-Origin-Request-1058575

Cross-Site

Der Server kann böswillige standortübergreifende Anforderungen aufgrund des zusätzlichen Kontexts in der von bereitgestellten HTTP-Anforderung ablehnen Sec-Fetch- * Überschriften.

Cross-Origin-Request-7423869

Sec-Fetch-Site

Sec-Fetch-Site teilt dem Server mit, von welcher Site die Anforderung gesendet wurde. Der Browser setzt diesen Wert auf einen der folgenden Werte:

  • gleicher Herkunft, wenn die Anfrage von Ihrer eigenen Bewerbung gestellt wurde (z. site.example)
  • gleiche Seite, si la solicitud fue realizada por un SubdomainConcepto de Subdominio¿Qué es un Subdominio?Un Subdominio es una extensión que se añade al nombre de un dominio para organizar las distintos secciones que pueda tener su web, aún cuando funcionando de forma totalmente independiente a esta. Por lo general, generalmente son palabras que lo preceden y que se separan de él utilizando un punto para remarcar tanto su independencia como la idea de que son algo desligado del contenido Plus de su sitio (p. ej. bar.site.example)
  • keiner, si la solicitud fue causada explícitamente por la interacción de un usuario con el User-AgentEl agente de usuario o agente es el identificador o nombre con el que un programa inicia sesión en el servidor web para solicitar un documento. El nombre se pasa por medio de del encabezado HTTP. Los programas de software y los robots de los motores de búsqueda pueden identificarse con este nombre. El agente de usuario permite ver precisamente cuándo un robot de motor de búsqueda visitó el portal Plus (por ejemplo, al hacer clic en un marcador)
  • Cross-Site, wenn die Anfrage von einer anderen Website eingereicht wurde (z. böse.beispiel)

Sec-Fetch-Modus

Sec-Fetch-Modus zeigt die Modus der Anfrage. Dies entspricht in etwa der Art der Anforderung und ermöglicht es Ihnen, Ressourcenlasten von Navigationsanforderungen zu unterscheiden. Zum Beispiel ein Ziel von navigieren zeigt eine Navigationsanforderung der obersten Ebene an, während No-Cors zeigt Ressourcenanforderungen an, z. B. das Hochladen eines Bildes.

Sec-Fetch-Dest

Sec-Fetch-Dest Einen Antrag stellen Ziel (zum Beispiel, wenn a Skript oder ein img veranlasste den Browser, eine Ressource anzufordern).

Die zusätzlichen Informationen, die diese Anforderungsheader bereitstellen, sind recht einfach. Mit dem zusätzlichen Kontext können Sie jedoch mit nur wenigen Codezeilen eine leistungsstarke serverseitige Sicherheitslogik erstellen, die auch als Ressourcenisolationsrichtlinie bezeichnet wird.

Implementieren Sie eine Richtlinie zur Ressourcenisolierung

Eine Richtlinie zur Ressourcenisolierung verhindert, dass Ihre Ressourcen von externen Websites angefordert werden. Durch das Blockieren dieses Datenverkehrs werden häufige Cross-Site-Web-Schwachstellen wie CSRF, XSSI, Timing-Angriffe und Cross-Origin-Informationslecks verringert. Diese Richtlinie kann für alle Endpunkte Ihrer Anwendung aktiviert werden und ermöglicht alle Ressourcenanforderungen, die von Ihrer eigenen Anwendung stammen, sowie das direkte Durchsuchen (über HTTP) ERHALTEN Anfrage). Endpunkte, die in einem standortübergreifenden Kontext geladen werden sollen (z. B. mit CORS geladene Endpunkte), können von dieser Logik ausgeschlossen werden.

Schritt 1: Zulassen von Anforderungen von Browsern, die keine Abrufmetadaten senden

Da nicht alle Browser das Abrufen von Metadaten unterstützen, müssen Sie Anforderungen zulassen, die nicht festgelegt sind Sec-Fetch- * Header, die auf das Vorhandensein von prüfen sec-fetch-site.

Alle folgenden Beispiele sind Python-Code.

wenn nicht req['sec-fetch-site']:
Rückkehr True

Vorsicht:
Da das Abrufen von Metadaten nur von modernen Browsern unterstützt wird, sollte es als verwendet werden Tiefenschutz und nicht als Ihre Hauptverteidigungslinie.

Schritt 2: Zulassen, dass Anforderungen auf derselben Site und im Browser gestartet werden

Jede Anforderung, die nicht aus einem originensübergreifenden Kontext stammt (z böse.beispiel) Wird erlaubt sein. Dies sind insbesondere Anfragen, die:

  • Es stammt aus Ihrer eigenen Anwendung (z. B. einer Anfrage desselben Ursprungs, bei der site.example Anfragen site.example / foo.json wird immer erlaubt sein).
  • Es kommt aus Ihren Subdomains.
  • Sie werden explizit durch die Interaktion eines Benutzers mit dem Benutzeragenten verursacht (z. B. direkte Navigation oder Klicken auf ein Lesezeichen usw.).

wenn req['sec-fetch-site'] im ('same-origin', 'same-site', 'none'):
Rückkehr True

Fallstricke!

Falls Ihre Subdomains nicht vollständig vertrauenswürdig sind, können Sie die Richtlinie strenger gestalten, indem Sie Anforderungen von Subdomains blockieren, indem Sie die entfernen gleiche Seite Wert.

Schritt 3: Aktivieren Sie einfaches Iframing und Navigation auf oberster Ebene

Um sicherzustellen, dass Ihre Site weiterhin von anderen Sites verlinkt werden kann, müssen Sie einfach (HTTP GET) Navigation auf oberster Ebene.

wenn req['sec-fetch-mode'] == 'navigieren' und req.Methode == 'GET'
und req['sec-fetch-dest'] nicht im ('object', 'embed'):
Rückkehr True

Fallstricke!

Die obige Logik schützt Ihre Anwendungsendpunkte davor, von anderen Websites als Ressourcen verwendet zu werden, ermöglicht jedoch die Navigation und Einbettung auf höchster Ebene (z. B. das Hochladen auf eine <iframeConcepto de Iframe¿Qué es un Iframe?Un Iframe es un documento de una web que se inserta en otra página web. Consiste en un elemento que puede albergar cualquier tipo de contenido en su interior y que ayuda, entre otras cosas, a ampliar el mensaje que se ofrece con fuentes externas o con material complementario que pueda resultar de interés para el usuario que entra.Este elemento web se usa especialmente al Plus>). Para mejorar aún más la seguridad, puede usar los encabezados de Obtener metadatos para restringir la navegación entre sitios a solo un conjunto permitido de páginas.

Schritt 4: Deaktivieren Sie die Endpunkte, die für den standortübergreifenden Datenverkehr vorgesehen sind (optional).

In einigen Fällen stellt Ihre Anwendung möglicherweise Ressourcen bereit, die zwischen Standorten geladen werden müssen. Diese Ressourcen müssen pro Pfad oder pro Endpunkt freigestellt werden. Beispiele für diese Endpunkte sind:

  • Endpunkte für den Cross-Origin-Zugriff: Wenn Ihre Anwendung Endpunkte bereitstellt CORS Wenn diese Option aktiviert ist, müssen Sie sie explizit von der Ressourcenisolierung ausschließen, um sicherzustellen, dass standortübergreifende Anforderungen an diese Endpunkte weiterhin möglich sind.
  • Öffentliche Ressourcen (z. B. Bilder, Stile usw.): Öffentliche und nicht authentifizierte Ressourcen, die aus anderen Quellen geladen werden müssen, können ebenfalls ausgenommen werden.

wenn req.path im ('/my_CORS_endpoint', '/favicon.png'):
Rückkehr True

Vorsicht:
Stellen Sie sicher, dass Teile Ihrer Anwendung statisch sind und keine vertraulichen Benutzerinformationen enthalten, bevor Sie Teile Ihrer Anwendung von diesen Sicherheitsbeschränkungen ausschließen.

Schritt 5: Lehnen Sie alle anderen Anforderungen ab, die standortübergreifend und nicht durchsuchbar sind

Sonstiges Cross-Site Die Anforderung wird von dieser Richtlinie zur Ressourcenisolierung abgelehnt und schützt Ihre Anwendung somit vor häufigen standortübergreifenden Angriffen.

Fallstricke!

Standardmäßig sollten Anforderungen, die gegen Ihre Richtlinie verstoßen, mit a abgelehnt werden HTTP 403 Antworten. Abhängig von Ihrem Anwendungsfall können Sie jedoch auch andere Aktionen in Betracht ziehen, z.

  • Nur Verstöße protokollieren. Dies ist besonders nützlich, wenn Sie Richtlinien auf Kompatibilität testen und Endpunkte suchen, die möglicherweise umgangen werden müssen.
  • Ändern Sie die Anforderung. En ciertos escenarios, considere realizar otras acciones como redirigir a su página de destinoConcepto de Página de Destino¿Qué es una Página de Destino?Una Página de destino es aquella web a la que accede un usuario al hacer un clic en un anuncio de cualquier tipo o inclusive al clicar en cualquiera de los resultados de su búsqueda. Una página de bienvenida, orientada a la compra, a informar o inclusive al registro, que puede tener mil usos o inclusive ser una página de conversión.Por Plus y eliminar las credenciales de autenticación (por ejemplo, cookies). Sin embargo, tenga en cuenta que esto podría debilitar las protecciones de una política basada en Obtener metadatos.

Beispiel: El siguiente código demuestra una implementación completa de una política sólida de aislamiento de recursos en el servidor o como un SoftwareConcepto de Software¿Qué es el Software y cuál es su función?Un Software es la parte lógica, o más bien el soporte lógico, de cualquier sistema de tipo informático. Sea un PC, un teléfono teléfono celular o inclusive una tablet, es todo aquel programa que se ejecuta en él gracias a la coordinación de la parte física, es decir, el hardware, para llevar adelante alguna tarea concretamente o un recopilatorio de Plus intermedio para denegar solicitudes de recursos entre sitios potencialmente maliciosos, al tiempo que permite solicitudes de navegación simples:


def allow_request(req):
if not req['sec-fetch-site']:
return True


if req['sec-fetch-site'] in ('same-origin', 'same-site', 'none'):
return True


if req['sec-fetch-mode'] == 'navigate' and req.method == 'GET'
and req['sec-fetch-dest'] not in ('object', 'embed'):
return True


if req.path in ('/my_CORS_endpoint', '/favicon.png'):
return True


return False

Implementieren Sie eine Richtlinie zur Ressourcenisolierung

  1. Installieren Sie ein Modul wie das obige Codefragment, um das Verhalten Ihrer Site aufzuzeichnen und zu überwachen und sicherzustellen, dass die Einschränkungen keinen Einfluss auf den legitimen Datenverkehr haben.
  2. Beheben Sie potenzielle Verstöße, indem Sie legitime Ursprungsendpunkte ausnehmen.
  3. Erzwingen Sie die Richtlinie, indem Sie nicht konforme Anforderungen verwerfen.

Identifizieren und korrigieren Sie Verstöße gegen Richtlinien

Es wird empfohlen, dass Sie Ihre Richtlinie ohne Nebenwirkungen testen, indem Sie sie zuerst im Berichtsmodus in Ihrem serverseitigen Code aktivieren. Alternativ können Sie diese Logik in Middleware oder einem Reverse-Proxy implementieren, der alle Verstöße protokolliert, die Ihre Richtlinie verursachen kann, wenn sie auf den Produktionsverkehr angewendet wird.

Aufgrund unserer Erfahrung mit der Implementierung einer Richtlinie zur Isolierung von Metadatensuchressourcen in Google sind die meisten Anwendungen standardmäßig mit einer solchen Richtlinie kompatibel und erfordern selten eine Endpunktausnahme, um standortübergreifenden Datenverkehr zuzulassen.

Anwenden einer Richtlinie zur Ressourcenisolierung

Sobald Sie überprüft haben, dass Ihre Richtlinie keinen Einfluss auf den legitimen Produktionsverkehr hat, können Sie die Einschränkungen durchsetzen, um sicherzustellen, dass andere Websites Ihre Ressourcen nicht anfordern können, und Ihre Benutzer vor standortübergreifenden Angriffen schützen.

Vorsicht:
Stellen Sie sicher, dass Sie ungültige Anforderungen ablehnen, bevor Sie Authentifizierungsprüfungen oder andere Anforderungsverarbeitungen ausführen, um zu vermeiden, dass zeitkritische Informationen angezeigt werden.

Andere Lesungen