Όρια ασφάλειας φυλλομετρητή — DedSec Project
Όρια ασφαλείας στον περιηγητή — προέλευση, εμφάνιση κειμένου και δικαιώματα Όρια εμπιστοσύνης μιας στατικής ιστοσελίδας Ένας σύνδεσμος δεν γίνεται ασφαλής επειδή το κείμενό του αρχίζει με…
Όρια ασφαλείας στον περιηγητή — προέλευση, εμφάνιση κειμένου και δικαιώματα
Όρια εμπιστοσύνης μιας στατικής ιστοσελίδας
Ένας σύνδεσμος δεν γίνεται ασφαλής επειδή το κείμενό του αρχίζει με το αναμενόμενο όνομα διακομιστή. Η πολιτική ίδιας προέλευσης συγκρίνει πρωτόκολλο, όνομα υπολογιστή και θύρα, όχι ένα τμήμα κειμένου. Το https://docs.example.test.evil/ δείχνει σε άλλον διακομιστή. Στο https://[email protected]/ το docs.example.test αποτελεί όνομα χρήστη, ενώ ο πραγματικός προορισμός είναι evil.example. Ανάλυσε τη URL πριν ελέγξεις την προέλευση. Ακόμη και ο σωστός έλεγχος προέλευσης δεν αντικαθιστά την εξουσιοδότηση στον διακομιστή.
Εκτελέσιμο παράδειγμα Node 18+
Αποθήκευσε ως origin_lab.cjs και εκτέλεσε node origin_lab.cjs. Η δοκιμή χρησιμοποιεί τον ενσωματωμένο αναλυτή URL, χωρίς να ξεκινά περιηγητή ή να στέλνει πραγματικό αίτημα.
const assert = require('node:assert/strict');
const base = 'https://docs.example.test/';
function sameOrigin(input) {
let url;
try { url = new URL(input, base); }
catch { return false; }
return url.protocol === 'https:' &&
url.origin === new URL(base).origin &&
!url.username && !url.password;
}
assert(sameOrigin('/guide'));
assert(sameOrigin('https://docs.example.test/article'));
assert(!sameOrigin('https://docs.example.test.evil/'));
assert(!sameOrigin('http://docs.example.test/'));
assert(!sameOrigin('javascript:alert(1)'));
assert(!sameOrigin('https://[email protected]/'));
console.log('PASS: parsed origins and deceptive URLs');
Ασφαλής προβολή και πρόσβαση δικτύου
Για εμφάνιση μη έμπιστου απλού κειμένου στο DOM χρησιμοποίησε textContent. Η ανάθεση σε innerHTML μπορεί να ερμηνεύσει τα δεδομένα ως HTML, δημιουργώντας ενεργά στοιχεία ή χειριστές συμβάντων. Αν χρειάζεσαι εμπλουτισμένο HTML, απαιτείται κατάλληλος ελεγμένος μηχανισμός καθαρισμού. Μία ορθή Content Security Policy βοηθά συμπληρωματικά, αλλά δεν αντικαθιστά την ασφαλή κατασκευή στοιχείων. Η πολιτική CORS ρυθμίζει πότε ένας περιηγητής επιτρέπει σε προέλευση να διαβάσει απάντηση άλλης προέλευσης. Δεν είναι μέθοδος σύνδεσης χρήστη, έλεγχος δικαιωμάτων ούτε απόλυτη άμυνα CSRF. Τα cookies χρειάζονται ρυθμίσεις SameSite, Secure και HttpOnly σύμφωνα με το μοντέλο απειλών.
Ελεγχόμενες ασκήσεις
- Δοκίμασε ίδια προέλευση, άλλο υποτομέα, αλλαγή σε http και παραπλανητική URL με @. Κατάγραψε την προέλευση που προκύπτει από την ανάλυση.
- Σε προσωρινό τοπικό αρχείο HTML εμφάνισε το ίδιο δείγμα με textContent και innerHTML. Μη χρησιμοποιείς μη έμπιστα δεδομένα σε ζωντανή ιστοσελίδα.
- Άλλαξε μόνο τη θύρα του διακομιστή και εξήγησε γιατί αλλάζει η προέλευση ακόμη και με ίδιο όνομα.
- Σχεδίασε διαδρομή API που απαιτεί δικαιώματα χρήστη και εξήγησε γιατί μία κεφαλίδα Access-Control-Allow-Origin δεν αρκεί για προστασία.
Παραδοτέα: PASS Node, έξι περιπτώσεις URL, επιλογή ασφαλούς τρόπου εμφάνισης και διάκριση CORS από εξουσιοδότηση. Ο πραγματικός έλεγχος σε περιηγητή παραμένει ξεχωριστός.