Safe by default is also annoying by default previous: Find the differences: The optimization that changed behavior next: NH Prof: The beta mistake This was the cause of a NH Prof not being able to report some errors home. I follow the logic, I agree with the logic, but I still goes ARGH!!! Comments 09/17/2009 01:18 AM by Phillip Haydon Lol. Fun times. 09/17/2009 04:30 AM by Jeff This is pretty common error(?) you get when you try to POST any data with ASP.NET MVC via Ajax. Pretty easy to fix with [ValidateInput(false)]...Its annoying as hell because if you have a say a "home" page with many partials from many controllers, you need to add to EVERY controller...blargh! 09/17/2009 05:48 AM by Jeff err, any POST data with HTML or HTML-like characters. 09/17/2009 07:11 AM by Robert A handy trick if you want to pass html-like characters in a field without disabling validation outright is to put two underscores in front of the fields name which will let that field through, ie: name=" __html" 09/17/2009 07:29 AM by Dmitriy Nagirnyak @Jeff, you can inherit from BaseController and set its "ValidateRequest = false" in its constructor (or wherever) only once. I never liked the attributes :) 09/17/2009 09:10 AM by Stephen One of many reasons I really don't like the ASP.NET stack more and more, its so general purpose and if anything aimed at the casual developers its sickening that in order to get it close to what you want you have to go and do more work (often runtime work) to turn OFF all the useless crap thats turned on by default.. This is why I don't think conventions are great in library code, just WHO are you targeting and why not just have sample code/templates to define conventions. Conventions should exist in the 'implementation' (the app) not its frameworks, if you DO put a convention in your framework then you best seriously think about how you design it for pluggability. 09/17/2009 10:35 AM by tobi for security purposes this is worthless as there are many known ways around this protection. you just have to encode the characters differently. if anyone wants to hack your site he still can do it with standard techniques. only people not wanting to hack the site are suffering. a better solution would have been to make the <%= %> syntax html-encode by default which anyway is what you want most of the time. 09/17/2009 10:36 AM by tobi this blog has removed my html: < % = % >. thats exactly as wrong as asp.net filtering. why not just encode html chars and allow them? this is guaranteed to be safe while filtering is not and provides a less good user experience. 09/17/2009 10:44 AM by tobi just one more thing: this is not safe by default, because there are easy ways around it. html-encoding all user input by default would be safe by default. oh you just cannot let people make security descisions. they get it wrong all the time. it is like the windows lan manager storing hashed passwords in two halfes instead of one whole. anyone who does not understand the problem with that should not design an authentication system at all. 09/17/2009 10:52 AM by Chris That annoys the hell out of me. Ironically our production app has an issue with this exception, even though we've turned it off at the web.config level and in our BaseController. It occurs about once a week and we can't locate the data that is causing it. 09/17/2009 08:46 PM by Jeff @Dmtriy - doh, so obvious! Thanks! 09/18/2009 01:04 PM by Duckie Chris: Cant you just log the error and fix it :-)? Anyways, you just need a [ValidateInput(false)] on the action, asp.net mvc doesnt seem to care about the setting in web.config. 09/18/2009 09:18 PM by Chris @Duckie: Our app is on the large size. We have about 60 controllers with over 600 actions. I'd rather have something in the controller infrastructure than decorating everything with that. Comments have been closed on this topic.