Это заблокировано прямо на уровне ядра IIS. Как тест я вышел из дела каждый модуль в IIS так, чтобы он даже не имел статического обработчика страниц, и он все еще отобразил 400 сообщений об ошибке.
я не полагаю, что возможно с IIS обойти это. Настройки реестра, которые Вы упомянули, для других типов ограниченных символов. Я не видел рычаг для изменения той функциональности.
то, Какова Ваша цель, избегает этого? Это открывает Вашу поверхность атаки шире, и я не могу вообразить законного посетителя, потерянного в результате блокирования неполных escape-последовательностей URL.
Update2: Вот три больших ссылки на это. И Nazim Lala и Wade Hilmo от команды IIS вели блог об этом из-за дискуссии по поводу Вашего вопроса. Также у Scott Hanselman есть большое сообщение на querystring части в.NET:
Обновление: я согласовал с членом команды IIS для получения авторитетного ответа. Он упомянул, что % считают небезопасным символом согласно RFC 1738 ( http://www.ietf.org/rfc/rfc1738.txt ).
Вот соответствующий текст:
Небезопасный:
Символы могут быть небезопасными по ряду причин. Пробел небезопасен, потому что значительные пробелы могут исчезнуть, и незначительные пробелы могут быть представлены, когда URL записываются или набираются или подвергаются обработке программ обработки текстов. Символы "<"; и">" небезопасны, потому что они используются в качестве разделителей вокруг URL в произвольном тексте; метка кавычки (""") используется для разграничивания URL в некоторых системах. Символ "#" небезопасен и должен всегда кодироваться, потому что он используется во Всемирной паутине и в других системах для разграничивания URL от идентификатора фрагмента/привязки, который мог бы следовать за ним. символьный "%" небезопасен, потому что это используется для кодировки других символов. Другие символы небезопасны, потому что шлюзы и другие транспортные агенты, как известно, иногда изменяют такие символы. Эти символы "{", "}", "|", "\", "^", "~ ", "[", "]", и" '".
Все небезопасные символы должны всегда кодироваться в URL. Например, символ "#" должен быть закодирован в URL даже в системах, которые обычно не имеют дело с фрагментом или идентификаторами привязки, так, чтобы, если URL копируется в другую систему, которая использует их, не было необходимо изменить кодирование URL.
, Таким образом, IIS заранее блокирует это на базовом уровне, превентивные меры безопасности для уменьшения их поверхности атаки.
Моя первая предсказуемая реакция - то, что необходимо говорить с власть имущими и сделать план заменить эту машину. Это может звучать как экстремальное значение, но когда Вы наследовали любую среду, Вы исчерпывающе не понимаете, что у Вас есть два варианта: Изучите это от и до и произведите документацию или замените его (хорошо зарегистрированной) системой, которую Вы понимаете полностью.
Почта в особенности полна головных болей и ловушек и по моему опыту известного - хорошую, чистую почтовую систему легче диагностировать, чем та, которую Вы наследовали.
Отвечать на Ваш фактический вопрос:
uname -a
даст Вам версию ядра (и архитектура), Вы работаетеcat /etc/debian_version
даст Вам имя выпуска Debiandpkg -l
даст Вам список всех установленных пакетовТакже заботьтесь для рассмотрения любого заявления веб-почты, что у них есть выполнение (это не может быть пакетом Debian, но веб-почтой, UI обычно говорит Вам, какое программное обеспечение это и можно ввести по абсолютному адресу вокруг в файловой системе для нахождения, где это живет), и любое программное обеспечение списка рассылки (мажордом, ezmlm, и т.д.), если они используют его.
Существуют также инструменты Linux Standard Base, которые дают Вам эту информацию (и больше), но я не знаю их первое, что пришло на ум, и они не могут быть установлены на Вашей машине так или иначе - Кто-то еще на здесь может, вероятно, указать на Вас на те инструменты.
Для обнаружения, какую разновидность Linux Вы выполняете введите следующие команды:
ls -al /etc/*release
cat /etc/*release
ls -la /etc/*version
cat /etc/*version
В зависимости от которой разновидности Linux Вы работаете, у Вас будет файл, которые соответствуют одному из указанных выше критериев, говоря версию Linux. Например, Redhat имеет/etc/redhat-release, и Debian имеет/etc/debian_version.
Видеть, что версия ядра использует uname:
uname -a
Для обнаружения, какой почтовый сервер работает введите:
netstat -tunap | grep LIST | grep ":25"
Это покажет Вам, какой процесс слушает на порте SMTP.
Надеюсь, это поможет.
в некоторых системах, существует также lsb_release -a
sherry [cpbills]$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux testing (squeeze)
Release: testing
Codename: squeeze
можно также сделать telnet localhost 25
считать баннер для Вашего почтового сервера.
uname -a
распечатает весь uname
данные, которые будут Вашим ядром, когда это было создано, Ваше имя хоста, и т.д.