Uw gebruikers beschermen tegen op DOM gebaseerde XSS-aanvallen

uw gebruikers beschermen tegen op DOM gebaseerde XSS-aanvallen

Cross-site scripting (XSS) is een van de meest voorkomende websites voor wayshackers-aanvallen. XSS kwetsbaarheden toestaan dat een kwaadaardige gebruiker willekeurige stukjes JavaScript uit te voeren wanneer andere gebruikers uw site te bezoeken.

XSS is de meest voorkomende openbaar gerapporteerde beveiligingsprobleem, en onderdeel van elke hacker toolkit.

Risico ‘ S

De Prevalentie Van Zeldzame

Exploiteerbaarheid Gemakkelijk

Schadelijke Gevolgen

DOM-based XSS-aanvallen hebben alle risico ‘ s in verband met andere vormen van XSS-aanval, met theadded bonus dat ze onmogelijk op te sporen van de kant van de server.Elke pagina die URI-fragmenten gebruikt, loopt mogelijk risico op XSS-aanvallen.

bescherming

bescherming tegen op DOM gebaseerde XSS-aanvallen is een kwestie van controleren of uwjavascript URI-fragmenten niet op een onveilige manier interpreteert. Er zijn een aantal manieren om dit te waarborgen.

gebruik een JavaScript-Framework

Frameworks zoals AngularJS en React gebruiken sjablonen die de constructie van Ad-hoc HTML tot een expliciete (en zeldzame) actie maken. Dit zal uw development team te duwen in de richting van best practices, en onveilige operaties gemakkelijker op te sporen.

AngularJS

In Hoekige geen dynamische content geschreven in accolades zal automaticallybe ontsnapt, dus het volgende is veilig:

 <div>{{dynamicContent}}</div>

Wees op uw hoede van een code, dat bindt met dynamische inhoud op de innerHTML attributesince dat zal niet ontsnapt automatisch:

 <div ="dynamicContent"></div> <div innerHTML="{{dynamicContent}}"></div>
Reageren

Reageren In een dynamische inhoud geschreven in accolades zal automaticallybe ontsnapt, dus het volgende is veilig:

render() { return <div>{dynamicContent}</div>}

Reageren kunt u schrijven raw HTML-per bindend inhoud van de dangerouslySetInnerHTML van een woning, die is genoemd om je te herinneren aan de veiligheid gevaar! Kijk uit voor elke code die eruit ziet als de volgende:

render() { return <div dangerouslySetInnerHTML={ __html: dynamicContent } />}
Controleer uw Code zorgvuldig

soms is een volledig JavaScript framework te zwaar voor uw site.In in dat geval moet u regelmatig code reviews uitvoeren om locaties te spotten die verwijzen naar window.location.hash. Overweeg om met overeengekomen coderingsnormen te komen over hoe URI-fragmenten moeten worden geschreven en geïnterpreteerd, en centraliseer deze logica in een kernbibliotheek.

als u JQuery gebruikt, controleer dan zorgvuldig elke code die dehtml(...) functie gebruikt. Als u ruwe HTML aan de clientzijde aan de achterkant van niet-vertrouwde invoer construeert, kunt u een probleem hebben, of de invoer nu van een URI-fragment komt of niet. Gebruik indien mogelijk de functie text(...).

als u direct de native DOM API ‘ s gebruikt, vermijd dan het gebruik van de volgende eigenschappen en functies:

  • innerHTML
  • outerHTML
  • document.write

plaats in plaats daarvan tekstinhoud binnen tags waar mogelijk:

  • textContent
analyseer JSON zorgvuldig

evalueer JSON niet om het te converteren naar native JavaScript – objecten-bijvoorbeeld door de functie eval(...) te gebruiken. Gebruik in plaats daarvan JSON.parse(...).

onveilige Code detecteren met behulp van ontwikkeltools

de Burp Suite, geproduceerd door het beveiligingsbedrijf PortSwigger,kan worden gebruikt om op DOM gebaseerde kwetsbaarheden te detecteren.

gebruik geen Uri-fragmenten!

de meest veilige code is de code die er niet is. Als je geen URI fragmenten nodig hebt, doe het dan niet! Schrijf een unit test om uw JavaScript te scannen op vermeldingen van window.location.hash, en laat het mislukken als het patroon wordt gevonden. Wanneer er een behoefte is om URI fragmenten te gebruiken, dan kunt u bespreken hoe te om hun veilig gebruik te verzekeren.

implementeer een Content-Security Policy

moderne browsers ondersteunen Content-Security Policies waarmee de auteur van een webpagina kan bepalen waar JavaScript (en andere bronnen)kan worden geladen en uitgevoerd. XSS-aanvallen vertrouwen erop dat de aanvaller kwaadaardige scripts kan uitvoeren op de webpagina van een gebruiker – hetzij door inline <script> tags ergens binnen de <html> tag van een pagina te plaatsen, of door de browser te misleiden om het JavaScript te laden van een kwaadaardig domein van derden.

door het instellen van een content security policy in de response header, kunt u de browser niet vertellen om nooit inline JavaScript uit te voeren, en om vast te stellen welke domeinen JavaScript voor een pagina kunnen hosten:

inhoud-veiligheid-beleid: script-src ’s zelf’ https://apis.google.com

door de URI ‘ s waarvan scripts kunnen worden geladen op een witte lijst te zetten, verklaar je impliciet dat inline JavaScript niet is toegestaan.

het inhoudsbeveiligingsbeleid kan ook worden ingesteld in een <meta> tag in het <head>element van de pagina:

<meta http-equiv="Content-Security-Policy" content="script-src 'self' https://apis.google.com">

deze aanpak zal uw gebruikers zeer effectief te beschermen! Het kan echter een aanzienlijke hoeveelheid discipline vergen om uw site klaar te maken voor een dergelijke header.Inline scripts tags worden beschouwd als slechte praktijk in de moderne web-ontwikkeling-het mengen van inhoud en code maakt web-toepassingen moeilijk te onderhouden – maar zijn vaak in oudere, oudere sites.

om stapsgewijs weg te migreren van inline scripts, overweeg dan gebruik te maken van SP overtreding Reports.By als u een report-uri – richtlijn toevoegt aan uw beleidsheader, zal de browser u op de hoogte brengen van beleidsovertredingen, in plaats van te voorkomen dat inline JavaScript wordt uitgevoerd:

Content-Security-Policy-Report-Only: script-src’self’; verslag-uri http://example.com/csr-reports

dit geeft je de zekerheid dat er geen slepende inline scripts zijn,voordat je ze regelrecht verbant.

Verder Lezen

  • Hoe Cross-site Scripting) werkt
  • Een Inleiding tot de Content Security Policy
  • CSP (Content Security Policy) op het Mozilla Developer Network
  • DOM Gebaseerde Cross-site Scripting Vulnerability
  • Content Security Policy Uitgelegd
Cross-site Scripting

Weerspiegeld XSS

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.