8

I'm using asp.net MVC 4.

These are my routes:

        routes.MapRoute(
         name: "Default",
         url: "{controller}/{action}/{id}"
         );

My current controller responds to the following request correctly:

http://localhost:2020/PrivacyUrls/Details/ct14524

How can I validate urls like these?

http://localhost:2020/PrivacyUrls/Details/*ct14524

http://localhost:2020/PrivacyUrls/Details/&ct14524

which now returns 404.

A potentially dangerous Request.Path value was detected from the client (*).

A potentially dangerous Request.Path value was detected from the client (&).

I thought adding this route, but it didn't help:

       routes.MapRoute(
         "PivacyUrl/Details",
         "PrivacyUrls/Details/{*ctid}",// URL with parameters 
         new { controller = "PrivacyUrls", action = "Details" }
         );
Joshua Enfield
  • 17,642
  • 10
  • 51
  • 98
Elad Benda
  • 35,076
  • 87
  • 265
  • 471

2 Answers2

9

In web.config:

<system.web>
    <httpRuntime requestPathInvalidCharacters="" requestValidationMode="2.0" />
    <pages validateRequest="false" />
</system.web>

Blatantly stolen from https://stackoverflow.com/a/6026291/299408

Community
  • 1
  • 1
Joshua Enfield
  • 17,642
  • 10
  • 51
  • 98
0

The answer did not work for me. I had to use:

[ValidateInput(false)]
public ActionResult Index...

Hope this helps others.

Rusty Nail
  • 2,692
  • 3
  • 34
  • 55