Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Validate Request + Cross Site Scripting attack

Îåêßíçóå áðü ôï ìÝëïò epp1123. Τελευταία δημοσίευση από το μέλος Oldgeorge στις 28-05-2008, 17:22. Υπάρχουν 7 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  27-05-2008, 11:26 42422

    Validate Request + Cross Site Scripting attack

    Εν πρώτοις καλημέρα. Εν δευτέροις, μου εμφανίστηκε το παραπάνω σφάλμα, δηλαδή το Cross Site Scripting attack, και προκειμένου να συνεχίσω να δουλεύω έθεσα το Validate Request = false. Τα ερωτήματα που γεννούνται είναι δύο

    1. Μπορώ να κάνω κάτι άλλο το οποίο θα μου επιτρέπει να έχω το Validate Request = true, αλλά να μην βγάζει το σφάλμα;
    2. Αφού "χτυπάει" κάθε φορά που βλέπει HTML ή άλλον scripting κώδικα, τότε γιατί δε "χτυπάει" στον ASPxHTML Editor (control είναι αυτό) της Dev Express?
  •  27-05-2008, 12:02 42423 σε απάντηση της 42422

    Απ: Validate Request + Cross Site Scripting attack

    Το Cross Site Scripting Attack δεν είναι σφάλμα αλλά τύπος επίθεσης από χάκερ. To ValidateRequest attribute σε προστατεύει από τέτοιες επιθέσεις, ελέγχοντας το input στη σελίδα. Το οποίο σημαίνει ότι κάτι περίεργο έχεις κάπου και προκαλεί αυτό το πρόβλημα. Σκέψου ότι το ValidateRequest είναι true by default, οπότε θα έπρεπε να σκάνε όλες οι εφαρμογές ASP.NET αν υπήρχε κάποιο πρόβλημα ή χρειαζόταν κάποια ιδιαίτερη ρύθμιση.

    Θα πρέπει τουλάχιστον να μας πεις τί σφάλμα παίρνεις? Το exception που εμφανίζεται είναι το HttpRequestValidationException, αλλά τί στοιχεία σου δίνει? Μήπως έχεις βάλει html ή script μέσα σε κάποιο text box? Αυτό εννοείς στο #2? Μήπως δηλαδή προσπαθείς να φτιάξεις κάποιο editor? Αν αυτό εννοείς, ο λόγος που δεν χτυπάει στους διάφορους editors είναι γιατί οι editors ΔΕΝ δέχονται HTML ή script σε textbox, αλλά χρησιμοποιούν διάφορα κόλπα για να παρουσιάσουν ό,τι γράφεις μέσα σε DIVs, παραγράφους και IFRAMEs. Για παράδειγμα, ο editor του DotNetZone είναι ένα IFRAME. Η παρακάτω γραμμή δεν είναι script, αλλά το κείμενο ενός <P>. Αν θες να φτιάξεις το δικό σου editor καλύτερα να ξεκινήσεις διαβάζοντας τον κώδικα κάποιου έτοιμου open Source όπως ο FCKEditor.

    alert();

    Επίσης, καλό είναι να κάνεις σαφείς ερωτήσεις και να δίνεις αρκετές πληροφορίες, όπως το κείμενο του error message. Διαβάζοντας στο documentation τί κάνει το ValidateRequest και το παράδειγμα του HttpRequestValidationException υπέθεσα ότι προσπάθησες να βάλεις HTML ή script σε κάποιο TextBox. Αλλά δεν έχω ιδέα αν το "έπιασα" ή όχι. Μπορεί π.χ. να είδες κάτι στο event log ενός production server, το οποίο σημαίνει ότι μποπρεί ήδη να δέχεσαι επίθεση από hackers. Μπορεί το μήνυμα να σου ήρθε από κάποιο third party control, όπως .... ο FCKEditor οπότε ότι έγραψα είναι άσχετο.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  27-05-2008, 12:27 42424 σε απάντηση της 42423

    Απ: Validate Request + Cross Site Scripting attack

    Όντως, το Cross Site Scripting Attack είναι επίθεση από χάκερ, μάλλον έγραψα σφάλμα γιατί σκεφτόμουν ότι θα έχω κάνει κάποιο λάθος στο κώδικα οπότε θα οδηγούσε σε "σφάλμα".

    • Ναι μέσα σε textbox έχω βάλει html κώδικα.
    • O κώδικας λάθους είναι παρακάτω

    Server Error in '/Cubeware' Application.

    A potentially dangerous Request.Form value was detected from the client (ProductManagementFormView$DescriptionTextBox="<p>Το Hotel Works τη...").

    Description: Request Validation has detected a potentially dangerous client input value, and processing of the request has been aborted. This value may indicate an attempt to compromise the security of your application, such as a cross-site scripting attack. You can disable request validation by setting validateRequest=false in the Page directive or in the configuration section. However, it is strongly recommended that your application explicitly check all inputs in this case.

    Exception Details: System.Web.HttpRequestValidationException: A potentially dangerous Request.Form value was detected from the client (ProductManagementFormView$DescriptionTextBox="<p>Το Hotel Works τη...").



    • Δεν φτιάχνω editor, είναι έτοιμος
    • Συγνώμη που δεν έγραψα περισσότερες πληροφορίες
  •  27-05-2008, 12:39 42426 σε απάντηση της 42424

    Απ: Validate Request + Cross Site Scripting attack

    Οπότε το πρόβλημα είναι ότι ο χρήστης έβαλε <p> μέσα στο DescriptionTextBox. Αν αυτός είναι ο editor, έχεις πρόβλημα. Ή θα πρέπει να βρεις άλλο καλύτερο, ή να τον διορθώσεις έτσι ώστε να μην περνάει tags χύμα. Μπορείς επίσης να απενεργοποιήσεις το ValidateRequest για τη σελίδα, αλλά μετά θα πρέπει να κάνεις εσύ validate ότι πχ. το DescriptionTextBox δεν περιέχει scripts ή links σε άλλα sites, frames τα οποία κοιτάνε σε άλλα sites, κλπ, κλπ, κλπ.
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  27-05-2008, 12:50 42427 σε απάντηση της 42426

    Απ: Validate Request + Cross Site Scripting attack

    Σημειωτέον το DescriptionTextBox είναι ένα απλό asp:TextBox. Τώρα με το ValidateRequest = false δουλεύω μία χαρά, μέχρι το textbox να αντικατασταθεί από έναν HTMLEditor τρίτου κατασκευαστή. Λοιπόν εν τέλει έχουμε και λέμε

    1. Ευχαριστώ. Η απορία μου λύθηκε.
    2. Για να κάνω εγώ το validation, γίνεται μέσα από τα controls ή πρέπει να γράψω και κώδικα επιπλέον; Αν ναι υπάρχει κάνας μπούσουλας της προκοπής και για μας τους αδαείς;
  •  27-05-2008, 13:00 42428 σε απάντηση της 42427

    Απ: Validate Request + Cross Site Scripting attack

    Υπάρχει το documentation. Κοίτα το "Script Exploits Overview" και το "How To: Protect agains script exploits by applying HTML Encoding to strings".
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  27-05-2008, 13:01 42429 σε απάντηση της 42428

    Απ: Validate Request + Cross Site Scripting attack

    Arigato
  •  28-05-2008, 17:22 42466 σε απάντηση της 42429

    Re: Απ: Validate Request + Cross Site Scripting attack

    Νομίζω ότι το πρόβλημα σου είναι ότι ο Rich Text Editor που χρησιμοποιείς γράφει στο postback data το raw html output που έχει βγάλει και γι'αυτό παίρνεις το error (δεν είναι ακριβώς ορθή αυτή η ανάλυση αλλά προσπαθώ να το κρατήσω σε απλό επίπεδο, μην βαράτε οι υπόλοιποι). Παρόμοια θέματα μπορεί να έχεις αν χρησιμοποιείς 3rd party controls που θέλουν scriptmanager για να τρέξουν (ή τουλάχιστον έτσι θυμάμαι).  Για την δεύτερη περίπτωση, δεν υπάρχει εύκολη λύση. για την πρώτη ένα απλό Server.HTMLEncode (myeditor.text) και το αντίστοιχο Server.HTMLDecode όταν ενημερώνεις τα περιεχόμενα του editor μπορεί να εξαφανίσουν το μήνυμα λάθους χωρίς να χρειάζονται περαιτέρω διαδικασίες.

     


    The people of the straight land have really got it made, a warm friendly sleep from the craddle to the grave
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems