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

Μεταφράσεις άρθρων Μεταφράσεις άρθρων
Αναγν. άρθρου: 887459 - Δείτε τα προϊόντα στα οποία αναφέρεται το συγκεκριμένο άρθρο.

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

Οι πληροφορίες που παρέχονται στη Γνωσιακή Βάση της Microsoft (Knowledge Base) παρέχονται "ως έχουν" χωρίς κανενός είδους εγγύηση. Δεν παρέχουμε καμία εγγύηση, είτε ρητή είτε σιωπηρή, περιλαμβανομένων των εγγυήσεων εμπορευσιμότητας και καταλληλότητας για συγκεκριμένο σκοπό. Σε καμία περίπτωση η Microsoft Corporation ή οι προμηθευτές της δεν φέρουν καμία απολύτως ευθύνη για οποιαδήποτε ζημιά, συμπεριλαμβανομένων των άμεσων, έμμεσων, θετικών ή αποθετικών ζημιών, διαφυγόντων κερδών, απώλειας επιχειρηματικών κερδών ή ειδικών ζημιών, ακόμα και στην περίπτωση που η Microsoft Corporation ή οι προμηθευτές της ενημερώθηκαν για την πιθανότητα πρόκλησης τέτοιων ζημιών. Σε κάποιες πολιτείες δεν επιτρέπεται ο αποκλεισμός ή ο περιορισμός της ευθύνης για θετική ή αποθετική ζημία, εύλογη αποζημίωση ή διαφυγόν κέρδος. Για το λόγο αυτό ο παραπάνω περιορισμός είναι δυνατό να μην ισχύει.
Ανάπτυξη όλων | Σύμπτυξη όλων

Σε αυτήν τη σελίδα

ΕΙΣΑΓΩΓΗ

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

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

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

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

Όταν μια διεύθυνση URL λαμβάνεται από ένα διακομιστή Web, ο διακομιστής αντιστοιχίζει την αίτηση σε μια διαδρομή συστήματος αρχείων από την οποία καθορίζεται η απάντηση. Η ρουτίνα κανονικοποίησης που χρησιμοποιείται για την αντιστοίχιση της αίτησης πρέπει να αναλύσει σωστά τη διεύθυνση URL, ώστε να αποφύγει την εξυπηρέτηση ή την επεξεργασία μη αναμενόμενου περιεχομένου. Για περισσότερες πληροφορίες σχετικά με την κανονικοποίηση, επισκεφθείτε την ακόλουθη τοποθεσία της Microsoft στο Web (αγγλικά):
http://msdn2.microsoft.com/en-us/library/aa302420.aspx
Συνιστάται να χρησιμοποιήσετε τις βέλτιστες πρακτικές για να προφυλάξετε τις εφαρμογές σας. Για πρόσθετες πληροφορίες, ανατρέξτε στην ακόλουθη ενότητα.

Προσθήκη επιπλέον δυνατοτήτων ασφαλείας κανονικοποίησης στην εφαρμογή 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>

Ιδιότητες

Αναγν. άρθρου: 887459 - Τελευταία αναθεώρηση: Δευτέρα, 3 Δεκεμβρίου 2007 - Αναθεώρηση: 2.5
Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 1.1
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.0 Service Pack 1
  • Microsoft .NET Framework 1.0 Service Pack 2
  • Microsoft .NET Framework 1.0 Service Pack 3
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.1 Service Pack 1
Λέξεις-κλειδιά: 
kbsecurity kbtshoot KB887459

Αποστολή σχολίων

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com