{"id":62586,"date":"2025-04-02T11:52:45","date_gmt":"2025-04-02T09:52:45","guid":{"rendered":"https:\/\/qualityminds.com\/?p=62586"},"modified":"2025-06-30T13:52:57","modified_gmt":"2025-06-30T11:52:57","slug":"angular-security-teil-3-proaktiver-xss-schutz-mit-csp","status":"publish","type":"post","link":"https:\/\/qualityminds.com\/de\/angular-security-teil-3-proaktiver-xss-schutz-mit-csp\/","title":{"rendered":"Angular Security Teil 3 &#8211; proaktiver XSS Schutz mit CSP"},"content":{"rendered":"\n<section id=\"block-66794739c40b0\"  class=\"hero-section template11\">\n\t<div class=\"bg\">\n\t\t\t<\/div>\n\t<div class=\"container\">\n\t\t<div class=\"hero-section__wrapper flex flex-wrap justify-between\">\n\t\t\t<div class=\"hero-section__description\">\n\t\t\t\t<div class=\"text-element-wrapper\">\n\t\t\t\t\t<div class=\"text-element\">\n\n<h1 class=\"wp-block-heading has-text-align-left\"><strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-theme-secondary-color\">Angular Security Teil 3 &#8211;<\/mark> proaktiver XSS Schutz <\/strong><br><strong>mit CSP<\/strong><\/h1>\n\n<\/div>\n\t\t\t\t<\/div>\n\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<div class=\"hero-section__img\">\n\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"1152\" height=\"832\" src=\"https:\/\/qualityminds.com\/wp-content\/uploads\/2025\/04\/freepik__the-style-is-3d-model-with-octane-render-volumetri__36276.jpeg\" class=\"attachment-full size-full\" alt=\"\" loading=\"eager\" srcset=\"https:\/\/qualityminds.com\/wp-content\/uploads\/2025\/04\/freepik__the-style-is-3d-model-with-octane-render-volumetri__36276.jpeg 1152w, https:\/\/qualityminds.com\/wp-content\/uploads\/2025\/04\/freepik__the-style-is-3d-model-with-octane-render-volumetri__36276-300x217.jpeg 300w, https:\/\/qualityminds.com\/wp-content\/uploads\/2025\/04\/freepik__the-style-is-3d-model-with-octane-render-volumetri__36276-1024x740.jpeg 1024w, https:\/\/qualityminds.com\/wp-content\/uploads\/2025\/04\/freepik__the-style-is-3d-model-with-octane-render-volumetri__36276-768x555.jpeg 768w\" sizes=\"(max-width: 1152px) 100vw, 1152px\" \/>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\n\t\t\t\n\t\t\t\t\t<\/div>\n\t<\/div>\n\n\t<div class=\"social\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"social-wrapper flex items-center\">\n\t\t\t\tFolge uns\t\t\t\t\t<ul class=\"no-list no-margin social-list\">\n\t\t\t\t\t<li>\n\t\t\t\t<a href=\"https:\/\/www.linkedin.com\/company\/qualityminds-gmbh\/\" target=\"_blank\" aria-label=\"share on social media\" rel=\"noopener\">\n\t\t\t\t\t<img decoding=\"async\" width=\"29\" height=\"29\" src=\"https:\/\/qualityminds.com\/wp-content\/uploads\/2024\/06\/linkedin.svg\" class=\"attachment-full size-full\" alt=\"\" loading=\"lazy\" \/>\t\t\t\t<\/a>\n\t\t\t<\/li>\n\t\t\t\t\t<li>\n\t\t\t\t<a href=\"https:\/\/www.facebook.com\/QualityMindsGmbH\" target=\"_blank\" aria-label=\"share on social media\" rel=\"noopener\">\n\t\t\t\t\t<img decoding=\"async\" width=\"29\" height=\"29\" src=\"https:\/\/qualityminds.com\/wp-content\/uploads\/2024\/06\/facebook.svg\" class=\"attachment-full size-full\" alt=\"\" loading=\"lazy\" \/>\t\t\t\t<\/a>\n\t\t\t<\/li>\n\t\t\t\t\t<li>\n\t\t\t\t<a href=\"https:\/\/www.xing.com\/pages\/qualitymindsgmbh\" target=\"_blank\" aria-label=\"share on social media\" rel=\"noopener\">\n\t\t\t\t\t<img decoding=\"async\" width=\"29\" height=\"29\" src=\"https:\/\/qualityminds.com\/wp-content\/uploads\/2024\/09\/xing_icon.svg\" class=\"attachment-full size-full\" alt=\"\" loading=\"lazy\" \/>\t\t\t\t<\/a>\n\t\t\t<\/li>\n\t\t\t<\/ul>\n\t\t\t<\/div>\n\t\t<\/div>\n\t<\/div>\n<\/section>\n\n\n\t<section id=\"block-667949a958bf7\"  class=\"single-post-section\">\n\t\t<div class=\"container\">\n\t\t\t<div class=\"content\">\n\t\t\t\t<div class=\"single-post-main\">\n\t\t\t\t\t<div class=\"text-element\">\n\n<p class=\"wp-block-paragraph\">Im <a href=\"https:\/\/qualityminds.com\/de\/angular-security-iframe-sandbox\/\">letzten Beitrag<\/a> ging es um Sicherheitsl\u00fccken, die du mit <code>iframe sandbox<\/code> proaktiv eind\u00e4mmen kannst. Doch nicht alle eingebundenen Inhalte haben nur einen praktischen Zweck \u2013 manchmal sorgen sie einfach f\u00fcr ein bisschen Spa\u00df. Gerade willst du den Online-Shop verlassen, als pl\u00f6tzlich ein fr\u00f6hliches, gelbes Quietsche-Entchen auf deinem Bildschirm erscheint. Als kleines Gimmick hat dein Lieblings-Online-Shop dies wohl eingebaut, damit du den Shop noch nicht verl\u00e4sst und vielleicht doch noch etwas kaufst. Naja, ein Quietsche-Entchen kannst du dir ja mal auf den Bildschirm schwimmen lassen\u2026<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Die Story geht weiter<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Die Angreifer geben nicht auf und wenden sich nun den \u00fcbrigen Abh\u00e4ngigkeiten der Website zu. Besonders ins Visier nehmen sie das Quietsche-Entchen-Generator-Modul, das schon lange vernachl\u00e4ssigt wird und voller Sicherheitsl\u00fccken steckt \u2013 dabei ist es f\u00fcr die Website unverzichtbar. Eine Neuentwicklung des Moduls kommt nicht in Frage, und der Einsatz von <code>&lt;iframe&gt;<\/code> ist aus technischen Gr\u00fcnden nicht m\u00f6glich. Die Angreifer entdecken, dass in der CVE-Datenbank seit sechs Monaten eine XSS-Schwachstelle f\u00fcr das Modul vermerkt ist. Sie versuchen, diese auszunutzen, scheitern jedoch an der bereits implementierten Content Security Policy (CSP), die den Angriff blockiert.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Content Security Policy (CSP)<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Du bist Entwickler:in: Du m\u00f6chtest deine Webseite besser vor XSS-Angriffen sch\u00fctzen und setzt auf Content Security Policy (CSP).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CSP sind zus\u00e4tzliche Regeln, die mittels der Header-Felder jeder HTTP-Anfrage \u00fcbermittelt werden. Sie beeinflussen das Verhalten des Webbrowsers in Bezug auf die JavaScript-Ausf\u00fchrung und die Nutzung weiterer externer Ressourcen. Eine gute Ausgangsbasis f\u00fcr eine Policy w\u00e4re zum Beispiel:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><code>Content-Security-Policy<\/code><\/td><td><code>default-src 'self'; style-src 'self'; script-src 'self' 'qualityminds.com';<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Was passiert hier?<\/strong> Wir sehen eine Reihe von Einstellungen, die durch Semikolon getrennt sind. Diese setzen sich wie folgt zusammen: <code>&lt;Direktive&gt; &lt;Domain\/Schl\u00fcsselwort&gt;<\/code>.<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Direktiven<\/strong><\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">CSP arbeitet mit einer Reihe von Direktiven, die festlegen, welche Ressourcen geladen und ausgef\u00fchrt werden d\u00fcrfen. Gemeinsame Direktiven sind:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>default-src<\/code>: Ist die Standardquelle f\u00fcr Ressourcen, wenn sie nicht von anderen Direktiven spezifiziert werden.<\/li>\n\n\n\n<li><code>script-src<\/code>: Kontrolliert, aus welchen Quellen die Skripte ausgef\u00fchrt werden k\u00f6nnen.<\/li>\n\n\n\n<li><code>style-src<\/code>: Bestimmt, aus welchen Quellen die Stilen Gebrauch gemacht werden kann.<\/li>\n\n\n\n<li><code>img-src<\/code>: Legt fest, von welchen Quellen Bilder geladen werden k\u00f6nnen.<\/li>\n\n\n\n<li><code>font-src<\/code>: Steuert die Quellen von Schriftarten.<\/li>\n\n\n\n<li><code>connect-src<\/code>: Gibt die Urspr\u00fcnge an, zu denen die Anwendung Netzwerkanfragen (AJAX, WebSockets usw.) senden kann.<\/li>\n\n\n\n<li><code>frame-src<\/code>: Definiert die Quellen f\u00fcr <code>&lt;frame&gt;<\/code> and <code>&lt;iframe&gt;<\/code>.<\/li>\n<\/ul>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>Schl\u00fcsselw\u00f6rter<\/strong><\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Direktiven k\u00f6nnen auf bestimmte Domains eingestellt werden, aber es gibt auch Schl\u00fcsselw\u00f6rter, die verwendet werden k\u00f6nnen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>'self'<\/code>: Bezieht sich auf die aktuelle Herkunft und erlaubt das Laden von Ressourcen der gleichen Domain.<\/li>\n\n\n\n<li><code>'none'<\/code>: Blockiert alle Ressourcen f\u00fcr diese Direktive.<\/li>\n\n\n\n<li><code>'unsafe-inline'<\/code>: Erm\u00f6glicht Inline-Skripte oder -Stile. Verwende dies mit Vorsicht, da es die Sicherheit beeintr\u00e4chtigen kann.<\/li>\n\n\n\n<li><code>'unsafe-eval'<\/code>: Erlaubt die Verwendung von <code>eval()<\/code> und \u00e4hnlichen Funktionen. Ebenfalls riskant.<\/li>\n\n\n\n<li><code>'strict-dynamic'<\/code>: Erlaubt die dynamische Erstellung von Skripten, aber nur aus vertrauensw\u00fcrdigen Quellen.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Lass uns nochmal das Beispiel von vorhin mit dem neu gewonnenen Wissen betrachten:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>default-src 'self'; <\/code>F\u00fcr alle nicht in der Policy erw\u00e4hnten Direktiven gilt: nur eigenen JavaScript laden.<\/li>\n\n\n\n<li><code>script-src 'self'; <\/code>JavaScript nur aus eigener Quelle vertrauen.<\/li>\n\n\n\n<li><code>style-src 'self' 'qualityminds.com'; <\/code>CSS-Styles aus eigener Quelle oder von \u201equalityminds.com\u201c vertrauen. Um subdomains einzuschlie\u00dfen ist wiederum style-src &#8217;self&#8216; &#8218;<strong>*.<\/strong>qualityminds.com&#8216;; notwendig.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Einrichten von CSP in nginx<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Die in Angular geschriebene Anwendung h\u00e4ufig mittels des nginx-Webservers zum Kunden gebracht. Ist eine besondere Konfiguration notwendig, so bedarf diese einer Anpassung in der nginx-Konfigurationsdatei unter <code>\/etc\/nginx\/sites-available\/<\/code> auf dem Linux-Server. Es kommt folgende Zeile hinzu:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>add_header Content-Security-Policy \"default-src 'self'; style-src 'self'; script-src 'self' 'qualityminds.com';\"<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nach dem Serverneustart werden die CSP-Header mit den Policy-\u00c4nderungen automatisch bei jedem Nutzer heruntergeladen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Einrichten von CSP in Angular<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Du bist kein Fan von Serverkonfiguration oder es liegt nicht in deinem Zust\u00e4ndigkeitsbereich? Es gibt eine M\u00f6glichkeit, CSP-Header in Angular zu definieren. Dies geht mittels des <code>&lt;meta&gt;<\/code>-Tags in Angulars <code>index.html<\/code> Datei:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>&lt;meta http-equiv=\"Content-Security-Policy\" content=\"default-src 'self'; style-src 'self'; script-src 'self' 'qualityminds.com';\"&gt;<\/code><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Stay tuned!<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Updates sind nicht genug<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Als Angreifer:in wei\u00dft du, dass viele Webseitenbetreiber auf Drittanbieter-Module setzen und diese oft Schwachstellen aufweisen. Du freust dich, dass du trotz Sandbox und CSP immer noch Angriffspunkte findest.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>N\u00e4chster Beitrag<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dein f\u00fcr XSS-Angriffe anf\u00e4lliger Quietsche-Entchen-Generator wurde gerade noch gerettet! Die Angreifer k\u00f6nnen keinen eigenen JavaScript-Code mit ihm ausf\u00fchren. Aber die n\u00e4chste Herausforderung kommt bestimmt. Erfahre im <a href=\"https:\/\/qualityminds.com\/de\/angular-security-teil-4-nonces-in-inline-styles\/\" target=\"_blank\" rel=\"noreferrer noopener\">n\u00e4chsten Beitrag<\/a>, wie du deine Webanwendung noch besser gegen Angriffe absichern kannst. Bleib dran!<\/p>\n\n<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"single-post-aside\">\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"post-author-wr\">\n\t\t\t\t\t\t\t<div class=\"author-img\">\n\t\t\t\t\t\t\t\t<img alt='' src='https:\/\/secure.gravatar.com\/avatar\/352c34b9ad9057f909b73077ffed49959a9c5a1ab228e936d9c91f430425c46e?s=96&#038;d=mm&#038;r=g' srcset='https:\/\/secure.gravatar.com\/avatar\/352c34b9ad9057f909b73077ffed49959a9c5a1ab228e936d9c91f430425c46e?s=192&#038;d=mm&#038;r=g 2x' class='avatar avatar-96 photo' height='96' width='96' \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"author-info text-element\">\n\t\t\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t\t\tGeschrieben von:\t\t\t\t\t\t\t\t\t<\/p>\n\t\t\t\t\t\t\t\t\t<p class=\"author-name\">\n\t\t\t\t\t\t\t\t\t\tVergil Iliev\t\t\t\t\t\t\t\t\t<\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"aside-cta\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"icon-wr\">\n\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"76\" height=\"76\" src=\"https:\/\/qualityminds.com\/wp-content\/uploads\/2024\/05\/Capa_1.svg\" class=\"attachment-full size-full\" alt=\"send icon\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"text-element\">\n\t\t\t\t\t\t\t\t\t<p>Schreib uns eine Mail \u2013 wir freuen uns auf deine Nachricht! <a class=\"cc-1rn59kg\" title=\"mailto:podcast@qualityminds.de\" href=\"mailto:hello@qualityminds.de\" data-testid=\"link-with-safety\" data-renderer-mark=\"true\">hello@qualityminds.de <\/a>oder auf <a class=\"cc-1rn59kg\" title=\"https:\/\/www.linkedin.com\/company\/qualityminds-gmbh\/posts\/?feedView=all\" href=\"https:\/\/www.linkedin.com\/company\/qualityminds-gmbh\/posts\/?feedView=all\" data-testid=\"link-with-safety\" data-renderer-mark=\"true\" target=\"_blank\" rel=\"noopener\">LinkedIn<\/a><\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"similar-posts\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"heading\">\n\t\t\t\t\t\t\t\t\tWeiterf\u00fchrende Links\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ul class=\"no-list no-margin\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/qualityminds.com\/de\/ms-office-accessibility-checker\/\">Blog-Beitrag: Der MS Office Accessibility Checker als Barrierefreiheitstool\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/qualityminds.com\/de\/iwc-s4f5-vom-seminar-zur-lernenden-organisation-wie-man-lernen-in-den-arbeitsalltag-integriert\/\">IWC (S4F5) Vom Seminar zur lernenden Organisation: Wie man Lernen in den Arbeitsalltag integriert\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/qualityminds.com\/de\/forschungszulage-explainable-ai\/\">Forschungszulage &#8222;Explainable AI&#8220;\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t<\/div>\n\n\t\t\t\t\t\t\t<div class=\"social-sharing\">\n\t\t\t\t\t<p class=\"no-margin\"> teilen\t\t\t\t\t<\/p>\n\t\t\t\t\t\n<ul class=\"no-list no-margin\">\n\t<li>\n\t\t<a href=\"https:\/\/www.linkedin.com\/feed\/?shareActive=true&#038;text=https:\/\/qualityminds.com\/de\/forschungszulage-explainable-ai\/\" class=\"linkedin\" target=\"_blank\" aria-label=\"auf LinkedIn teilen\"><\/a>\n\t<\/li>\n\t<li>\n\t\t<a href=\"https:\/\/www.facebook.com\/sharer\/sharer.php?u=https:\/\/qualityminds.com\/de\/forschungszulage-explainable-ai\/\" class=\"facebook\" target=\"_blank\" aria-label=\"auf Facebook teilen\"><\/a>\n\t<\/li>\n\t<li>\n\t\t<a href=\"https:\/\/www.xing.com\/spi\/shares\/new?url=https:\/\/qualityminds.com\/de\/forschungszulage-explainable-ai\/\" class=\"xing\" target=\"_blank\" aria-label=\"auf Xing teilen\"><\/a>\n\t<\/li>\n<\/ul>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t<\/section>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":65,"featured_media":62595,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[504,503],"class_list":["post-62586","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog-de","tag-blog","tag-software-engineering"],"acf":[],"jetpack_featured_media_url":"https:\/\/qualityminds.com\/wp-content\/uploads\/2025\/04\/freepik__the-style-is-3d-model-with-octane-render-volumetri__36276.jpeg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/qualityminds.com\/de\/wp-json\/wp\/v2\/posts\/62586","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/qualityminds.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/qualityminds.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/qualityminds.com\/de\/wp-json\/wp\/v2\/users\/65"}],"replies":[{"embeddable":true,"href":"https:\/\/qualityminds.com\/de\/wp-json\/wp\/v2\/comments?post=62586"}],"version-history":[{"count":13,"href":"https:\/\/qualityminds.com\/de\/wp-json\/wp\/v2\/posts\/62586\/revisions"}],"predecessor-version":[{"id":64773,"href":"https:\/\/qualityminds.com\/de\/wp-json\/wp\/v2\/posts\/62586\/revisions\/64773"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/qualityminds.com\/de\/wp-json\/wp\/v2\/media\/62595"}],"wp:attachment":[{"href":"https:\/\/qualityminds.com\/de\/wp-json\/wp\/v2\/media?parent=62586"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/qualityminds.com\/de\/wp-json\/wp\/v2\/categories?post=62586"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/qualityminds.com\/de\/wp-json\/wp\/v2\/tags?post=62586"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}