Saya menggunakan perutean umum dengan MVC untuk menyediakan jalur ke sumber daya di aplikasi kita. Sepertinya ini:
_routes.MapRoute(null, "Resource/{*resourcePath}", new {
controller = "Resource",
action = "Open"
});
Dan aksinya kira-kira seperti itu
public ActionResult Open(string resourcePath) {
string[] path = resourcePath.Split('/');
}
Menekannya dengan URL yang bagus dan ramah akan berfungsi dengan baik
/Resource/Path/To/Resource
path = ["Path", "To", "Resource"]
Tetapi ketika saya memiliki nama sumber daya dengan garis miring ke depan (yang tentu saja saya hindari), ia memperlakukan garis miring yang lolos sebagai bagian dari jalur
/Resource/Path/To/Resource%2FWith%2FSlashes
path = ["Path", "To", "Resource", "With", "Slashes"]
I expected ["Path", "To", "Resource/With/Slashes"]
Saya mencoba melarikan diri ganda, namun ASP.NET mengeluh tentang pelarian ganda karena alasan keamanan, dan saya rasa saya tidak harus membuka kaleng worm tersebut.
Apakah ada cara agar rute umum tidak luput dari tebasan?