Це заблоковано прямо на рівні ядра IIS. Як тест я витягнув кожен модуль в IIS, щоб у нього навіть не було статичного обробника сторінки, і він все ще відображав повідомлення про помилку 400.
Я не вірю, що з IIS можна обійти це. Параметри реєстру, які ви згадали, стосуються інших типів обмежених символів. Я не бачив важеля для зміни цієї функціональності.
Яка ваша мета - уникнути цього? Це відкриває вашу поверхню атаки ширше, і я не можу уявити, що законний відвідувач втрачається в результаті блокування неповних послідовностей втечі URL-адреси.
Update2:
Ось три чудові посилання на це. І Назим Лала, і Уейд Хілмо з команди IIS обговорили це питання через дискусію навколо вашого питання. Також у Скотта Хензельмана є чудовий пост щодо частини запитів у .NET:
Оновлення:
я поспілкувався з членом команди IIS, щоб отримати авторитетну відповідь. Він зазначив, що% вважається небезпечним символом згідно з RFC 1738 ( http://www.ietf.org/rfc/rfc1738.txt ).
Ось непотрібний текст:
Небезпечно:
Персонажі можуть бути небезпечними з кількох причин. Символ простору небезпечний, оскільки значні пробіли можуть зникати, а незначні пробіли можуть бути введені під час транскрибування або набору URL-адрес або піддаються обробці програм для обробки тексту. Символи "<" та ">" небезпечні, оскільки вони використовуються як роздільники навколо URL-адрес у вільному тексті; лапка ("" ") використовується для розмежування URL-адрес у деяких системах. Символ" # "небезпечний і завжди повинен бути закодований, оскільки він використовується у всесвітній павутині та в інших системах для розмежування URL-адреси від фрагмента / якоря. ідентифікатор, який може слідувати за ним. Символ "%" небезпечний, оскільки використовується для кодування інших символів. Інші символи небезпечні, тому що, як відомо, шлюзи та інші транспортні агенти іноді змінюють такі символи. Це символи "{", "}", "|", "\", "^", "~", "[", "]" і "` ".
Усі небезпечні символи завжди повинні бути закодовані в межах URL-адреси. Наприклад, символ "#" повинен бути закодований в URL-адресах, навіть у системах, які зазвичай не мають ідентифікаторів фрагмента чи прив'язки, так що якщо URL-адреса буде скопійована в іншу систему, яка їх використовує, не потрібно буде змінювати Кодування URL-адрес.
Таким чином, IIS попередньо блокує це на базовому рівні, проактивний захід безпеки для мінімізації їхньої атаки.