Ini diblokir tepat di tingkat kernel IIS. Sebagai ujian saya mengeluarkan semua modul di IIS sehingga bahkan tidak memiliki pengendali halaman statis, dan masih menampilkan pesan kesalahan 400.
Saya tidak percaya itu mungkin dengan IIS untuk mengatasi itu. Pengaturan registri yang Anda sebutkan adalah untuk jenis karakter terbatas lainnya. Saya belum melihat tuas untuk mengubah fungsi itu.
Apa tujuan Anda menghindari itu? Ini membuka permukaan serangan Anda lebih luas, dan saya tidak bisa membayangkan pengunjung yang sah hilang karena memblokir urutan URL melarikan diri yang tidak lengkap.
Update2:
Berikut adalah tiga tautan bagus untuk ini. Baik Nazim Lala dan Wade Hilmo dari tim IIS telah membuat blog tentang hal ini karena diskusi seputar pertanyaan Anda. Scott Hanselman juga memiliki pos yang bagus di bagian querystring dalam .NET:
Pembaruan:
Saya memeriksa dengan anggota tim IIS untuk mendapatkan jawaban yang sah. Dia menyebutkan bahwa% dianggap sebagai karakter yang tidak aman menurut RFC 1738 ( http://www.ietf.org/rfc/rfc1738.txt ).
Inilah teks yang relevan:
Tidak aman:
Karakter dapat menjadi tidak aman karena sejumlah alasan. Karakter spasi tidak aman karena ruang yang signifikan dapat menghilang dan ruang yang tidak signifikan dapat diperkenalkan ketika URL ditranskripsi atau mengeset atau mengalami perlakuan program pengolah kata. Karakter "<" dan ">" tidak aman karena mereka digunakan sebagai pembatas di sekitar URL dalam teks bebas; tanda kutip ("" ") digunakan untuk membatasi URL di beberapa sistem. Karakter" # "tidak aman dan harus selalu disandikan karena digunakan di World Wide Web dan di sistem lain untuk membatasi URL dari fragmen / jangkar pengidentifikasi yang mungkin mengikutinya. Karakter "%" tidak aman karena digunakan untuk penyandian karakter lain. Karakter lain tidak aman karena gateway dan agen transportasi lain diketahui kadang-kadang memodifikasi karakter tersebut. Karakter-karakter ini adalah "{", "}", "|", "\", "^", "~", "[", "]", dan "` ".
Semua karakter yang tidak aman harus selalu dikodekan dalam URL. Misalnya, karakter "#" harus dikodekan dalam URL bahkan dalam sistem yang biasanya tidak berurusan dengan pengidentifikasi fragmen atau jangkar, sehingga jika URL disalin ke sistem lain yang menggunakannya, tidak perlu mengubah Pengkodean URL.
Jadi IIS secara proaktif memblokir ini di tingkat inti, langkah keamanan proaktif untuk meminimalkan permukaan serangan mereka.