PHP: ασφάλεια. Τι είναι το XSS. Αποθηκευμένες επιθέσεις XSS και προστασία από αυτές (κατάργηση javascript από html στο πρόγραμμα περιήγησης) Το Xss επιτίθεται σε προστασία εναντίον τους




Όσον αφορά την ασφάλεια εφαρμογών, είναι σημαντικό να φροντίζετε όχι μόνο το υλικό και το λειτουργικό σύστημα, αλλά και τη σύνταξη ασφαλών σεναρίων. Σε αυτό το άρθρο, θα μάθετε πώς να ασφαλίζετε την εφαρμογή σας και να την κάνετε λιγότερο ευάλωτη. Ακολουθεί μια λίστα μέτρων που θα σας βοηθήσουν να προστατεύσετε την εφαρμογή σας από κάθε είδους επιθέσεις:

  • Επικύρωση εισερχόμενων δεδομένων
  • Προστασία από επιθέσεις XSS
  • Προστασία από επιθέσεις CSRF
  • SQL Injection Prevention
  • Προστασία συστήματος αρχείων
  • Προστασία δεδομένων συνεδρίας
  • Σφάλμα επεξεργασίας
  • Προστασία προσαρτήματος
  • Επικύρωση εισερχόμενων δεδομένων

    Όταν σχεδιάζετε μια εφαρμογή, θα πρέπει να προσπαθείτε να την προστατεύετε από "κακές" εισαγωγές. Ο κανόνας που πρέπει να ακολουθήσετε είναι κάπως έτσι: "Μην εμπιστεύεστε ποτέ αυτό που έχει εισαγάγει ο χρήστης." Παρά το γεγονός ότι οι περισσότεροι χρήστες δεν αποτελούν απειλή, υπάρχει πάντα η πιθανότητα κάποιος να θελήσει να χακάρει τον ιστότοπό σας χρησιμοποιώντας «κακά» δεδομένα που έχουν εισαχθεί μέσω φορμών ή της γραμμής διευθύνσεων. Εάν πάντα επικυρώνετε και φιλτράρετε τα εισερχόμενα δεδομένα, τότε έχετε πολλές πιθανότητες να γράψετε μια ασφαλή εφαρμογή.

    Ελέγχετε πάντα τα δεδομένα σας σε σενάρια PHP. Εάν χρησιμοποιείτε JavaScript για την επικύρωση δεδομένων, τότε ανά πάσα στιγμή ένας εισβολέας μπορεί να την απενεργοποιήσει στο πρόγραμμα περιήγησής του. Σε αυτήν την περίπτωση, η αίτησή σας κινδυνεύει. Κανείς δεν είναι ενάντια στην επικύρωση JavaScript, αλλά για καλή προστασία, πρέπει να ελέγξετε ξανά τα δεδομένα σε σενάρια PHP.

    Προστασία από επιθέσεις XSS

    Η δέσμη ενεργειών μεταξύ τοποθεσιών ή η επίθεση XSS είναι μια επίθεση που βασίζεται στην ένεση κώδικα σε δυνητικά ευάλωτες σελίδες. Ο κίνδυνος είναι ότι ο κακόβουλος κώδικας μπορεί να εισαχθεί μέσω φορμών και στη συνέχεια να εμφανιστεί στο πρόγραμμα περιήγησης.

    Ας υποθέσουμε ότι ο ιστότοπός σας έχει μια φόρμα για την εισαγωγή σχολίων, τα οποία εμφανίζονται αμέσως μετά την προσθήκη. Ένας εισβολέας μπορεί να εισάγει ένα σχόλιο που περιέχει κώδικα JavaScript. Μετά την υποβολή της φόρμας, τα δεδομένα αποστέλλονται στον διακομιστή και εισάγονται στη βάση δεδομένων. Μετά από αυτό, τα δεδομένα ανακτώνται από τη βάση δεδομένων και το νέο σχόλιο εμφανίζεται στη σελίδα HTML, συμπεριλαμβανομένου του ενσωματωμένου κώδικα JavaScript. Ενδέχεται να ανακατευθύνει τον χρήστη σε κάποια κακόβουλη σελίδα ή σε ιστότοπο ηλεκτρονικού ψαρέματος.

    Για να προστατεύσετε τις εφαρμογές σας, περάστε τα εισερχόμενα δεδομένα μέσω της συνάρτησης strip_tags(), η οποία θα αφαιρέσει όλες τις υπάρχουσες ετικέτες. Όταν εμφανίζετε δεδομένα σε ένα πρόγραμμα περιήγησης, χρησιμοποιήστε τη συνάρτηση htmlentities().

    Προστασία από επιθέσεις CSRF

    Ο επόμενος τύπος επίθεσης που θα εξετάσουμε είναι η επίθεση CSRF ή η παραποίηση αιτημάτων μεταξύ τοποθεσιών. Ο εισβολέας χρησιμοποιεί διάφορα κόλπα για να αποκτήσει εμπιστευτικές πληροφορίες ή να ολοκληρώσει μια συναλλαγή χωρίς να το γνωρίζει το θύμα. Αυτό συμβαίνει κυρίως σε κακώς προστατευμένους ιστότοπους, όπου η επιχειρηματική λογική βασίζεται στην εργασία των αιτημάτων GET.

    Γενικά, τα αιτήματα GET είναι ανίκανα. Η ανικανότητα, σε αυτό το πλαίσιο, σημαίνει ότι η ίδια σελίδα μπορεί να προσπελαστεί όσες φορές επιθυμείτε χωρίς καμία παρέμβαση τρίτων. Αυτός είναι ο λόγος για τον οποίο τα αιτήματα GET θα πρέπει να χρησιμοποιούνται μόνο για πρόσβαση σε πληροφορίες, αλλά σε καμία περίπτωση για την πραγματοποίηση διαφόρων ειδών συναλλαγών.

    Το ακόλουθο απλό παράδειγμα δείχνει πώς ένας μη ασφαλής ιστότοπος μπορεί να υποβληθεί σε επίθεση CSRF: