Τρόπος ελέγχου μέσω προγραμματισμού για ζητήματα κανονικοποίησης με το ASP.NET

ΕΙΣΑΓΩΓΗ

Αυτό το άρθρο περιγράφει τον τρόπο προσθήκης δυνατοτήτων ασφαλείας σε μια εφαρμογή του ASP.NET για προστασία έναντι συνηθισμένων ζητημάτων κανονικοποίησης.

Περισσότερες πληροφορίες

Τι είναι η κανονικοποίηση;

Κανονικοποίηση ονομάζεται η διαδικασία η οποία καθορίζει τον τρόπο διάφορες ισοδύναμες μορφές ενός ονόματος επιλύονται σε ένα μόνο τυποποιημένο όνομα. Το ένα και μόνο τυποποιημένο όνομα είναι επίσης γνωστό ως το κανονικό όνομα. Για παράδειγμα, σε ένα συγκεκριμένο υπολογιστή, τα ονόματα c:\dir\test.dat, test.dat, και... \.. Όλοι οι \test.dat μπορεί να παραπέμπουν στο ίδιο αρχείο. Κανονικοποίηση ονομάζεται η διαδικασία η οποία αντιστοιχίζει αυτά τα ονόματα σε ένα όνομα παρόμοιο με c:\dir\test.dat.

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

Προσθήκη επιπλέον δυνατοτήτων ασφαλείας κανονικοποίησης στην εφαρμογή Web σας

Οι προγραμματιστές Microsoft ASP.NET μπορούν να προσθέσουν περισσότερους ελέγχους, για να μειώσουν τα ζητήματα κανονικοποίησης για μια εφαρμογή Web, προσθέτοντας ένα πρόγραμμα χειρισμού συμβάντων Application_BeginRequest στο αρχείο Global.asax, το οποίο είναι αποθηκευμένο στον ριζικό κατάλογο της εφαρμογής Web. Αυτό το πρόγραμμα χειρισμού συμβάντων εκτελείται για κάθε αίτηση Web. Μπορείτε να προσθέσετε κώδικα σε αυτό το πρόγραμμα χειρισμού συμβάντων για προστασία έναντι των ζητημάτων κανονικοποίησης.

Δείγμα κώδικα

Τα ακόλουθα δείγματα κώδικα παρουσιάζουν τον τρόπο προσθήκης ενός προγράμματος χειρισμού συμβάντων Application_BeginRequest σε ένα αρχείο Global.asax. Αυτό το πρόγραμμα χειρισμού συμβάντων συμβάλλει στην αποτροπή μη έγκυρων χαρακτήρων και ακατάλληλων διευθύνσεων URL, εκτελώντας επαληθεύσεις διαδρομών. Επομένως, μπορείτε να αποφύγετε συνήθη ζητήματα κανονικοποίησης.

Δείγμα κώδικα Global.asax (Visual Basic .NET)

<script language="vb" runat="server">Sub Application_BeginRequest(Sender as Object, E as EventArgs)
If (Request.Path.IndexOf(chr(92)) >= 0 OR _
System.IO.Path.GetFullPath(Request.PhysicalPath) <> Request.PhysicalPath) then
Throw New HttpException(404, "Not Found")
End If
End Sub
</script>

Global.asax δείγμα κώδικα (C#)

<script language="C#" runat="server">void Application_BeginRequest(object source, EventArgs e) {
if (Request.Path.IndexOf('\\') >= 0 ||
System.IO.Path.GetFullPath(Request.PhysicalPath) != Request.PhysicalPath) {
throw new HttpException(404, "not found");
}
}
</script>

Αποποίηση ευθυνών

Οι πληροφορίες που παρέχονται στη Γνωσιακή βάση της Microsoft παρέχονται "ως έχουν" χωρίς κανενός είδους εγγύηση. Δεν παρέχουμε καμία εγγύηση, είτε ρητή είτε σιωπηρή, περιλαμβανομένων των εγγυήσεων εμπορευσιμότητας και καταλληλότητας για συγκεκριμένο σκοπό. Σε ΚΑΜΙΑ ΠΕΡΙΠΤΩΣΗ Microsoft Corporation ή οι προμηθευτές είναι ευθύνη για οποιαδήποτε ζημιά οποιαδήποτε περιλαμβανομένης άμεση, έμμεση, αποθετική, αποθετική, απώλειας επιχειρηματικών κερδών ή ειδικών ζημιών, ακόμα και αν η Microsoft Corporation ή οι προμηθευτές της ενημερώθηκαν για την πιθανότητα πρόκλησης τέτοιων ζημιών. Σε κάποιες πολιτείες δεν επιτρέπεται ο αποκλεισμός ή ο περιορισμός της ευθύνης για παρεπόμενες ή συμπτωματικές βλάβες. Επομένως, δεν εφαρμόζεται ο παραπάνω περιορισμός.
Ιδιότητες

Αναγνωριστικό άρθρου: 887459 - Τελευταία αναθεώρηση: 17 Ιαν 2017 - Αναθεώρηση: 2

Σχόλια