Το 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