Dies ist direkt in der IIS-Kernel-Ebene gesperrt. Als Test habe ich jedes Modul in IIS herausgezogen, sodass es nicht einmal einen statischen Page-Handler hatte und trotzdem die 400-Fehlermeldung angezeigt wurde.
Ich glaube nicht, dass es mit IIS möglich ist, das zu umgehen. Die von Ihnen erwähnten Registrierungseinstellungen gelten für andere Arten von eingeschränkten Zeichen. Ich habe keinen Hebel gesehen, um diese Funktionalität zu ändern.
Was ist Ihr Ziel, das zu vermeiden? Es öffnet Ihre Angriffsfläche weiter und ich kann mir nicht vorstellen, dass ein legitimer Besucher durch das Blockieren unvollständiger URL-Escape-Sequenzen verloren geht.
Update2:
Hier sind drei großartige Links dazu. Sowohl Nazim Lala als auch Wade Hilmo vom IIS-Team haben darüber wegen der Diskussion um Ihre Frage gebloggt. Auch Scott Hanselman hat einen tollen Beitrag zum Querystring-Teil in .NET:
Update:
Ich habe mich bei einem Mitglied des IIS-Teams erkundigt, um eine verbindliche Antwort zu erhalten. Er erwähnte, dass% gemäß RFC 1738 ( http://www.ietf.org/rfc/rfc1738.txt ) als unsicher gilt .
Hier ist der relevante Text:
Unsicher:
Zeichen können aus mehreren Gründen unsicher sein. Das Leerzeichen ist unsicher, da signifikante Leerzeichen verschwinden und unwichtige Leerzeichen eingefügt werden können, wenn URLs transkribiert oder gesetzt oder Textverarbeitungsprogrammen unterzogen werden. Die Zeichen "<" und ">" sind unsicher, da sie als Begrenzer für URLs im Freitext verwendet werden. Das Anführungszeichen ("" ") wird in einigen Systemen zum Abgrenzen von URLs verwendet. Das Zeichen" # "ist unsicher und sollte immer codiert werden, da es im World Wide Web und in anderen Systemen zum Abgrenzen einer URL von einem Fragment / Anker verwendet wird möglicherweise folgende Kennung: Das Zeichen "%" ist unsicher, da es für die Kodierung anderer Zeichen verwendet wird. Andere Zeichen sind unsicher, da Gateways und andere Transport-Agents diese Zeichen manchmal ändern. Diese Zeichen sind "{", "}", "|", "\", "^", "~", "[", "]" und "` ".
Alle unsicheren Zeichen müssen immer in einer URL codiert sein. Beispielsweise muss das Zeichen "#" in URLs codiert werden, auch in Systemen, die normalerweise keine Fragment- oder Anker-IDs verarbeiten. Wenn die URL in ein anderes System kopiert wird, das sie verwendet, ist es nicht erforderlich, die zu ändern URL-Codierung.
Daher blockiert IIS dies proaktiv auf der Kernebene, einer proaktiven Sicherheitsmaßnahme zur Minimierung der Angriffsfläche.