Я могу создать “исключение” к Виртуальному каталогу IIS?

Независимо от того, что Вы выбираете, если это будет выставлено общедоступному Интернету, Вы хотите удостовериться, что это поддерживает selinux. Это сохранило мой зад по крайней мере в одном случае, где иначе я, конечно, стал бы взломанным из-за дефекта безопасности в программном обеспечении, я установил. Не только сделал selinux полностью заблокируйте нападение, но через setroubleshoot это повысило всплывающее окно для предупреждения меня об этом.

1
задан 9 June 2009 в 21:06
3 ответа

Это - вид гетто, но это мог бы быть простой способ решить Вашу проблему.

  • Создайте второй виртуальный каталог, который указывает на c:\blah.
  • В "скучном" виртуальном каталоге (который указывает на C:\inetpub\wwwroot\blah), установите пользовательский обработчик ошибок для 404 ошибок, который является страницей ASP или ASP.Net в c:\inetpub\wwwroot\blah\
  • На 404 страницах ASP.Net обработчика,
    • вытяните требуемый URL (это должна быть единственная вещь в Запросе. QueryString)
    • обрубите все кроме имени файла, которое требуют
    • перенаправьте к "/cblah/FILENAME".

Вот немного отрывка кода ASP.NET, который мог действовать как 404 обработчика:

string qs = Page.Request.QueryString.ToString();
qs = Server.UrlDecode(qs);
int c = qs.LastIndexOf("/");
string filepath = qs.Substring(c+1);
Response.Redirect("/cblah/"+filepath);
1
ответ дан 4 December 2019 в 02:31
  • 1
    Замечательно! I' m уверенный это работало бы. –  Joshua Carmody 11 June 2009 в 22:19

Вы могли, вероятно, сделать это через пользовательский записанный фильтр ISAPI, но я не знаю ни о каком пути в IIS или существующем продукте, который сделал бы точно, что Вы ищете.

0
ответ дан 4 December 2019 в 02:31

IIRF является свободным URL Rewriter, который имеет возможность проверить на существование каталога перед перезаписью. Правила были бы похожи:

# This rule matches, eg, http://server/blah/test.html
# It does "no rewrite" (-) if the file c:\blah\test.html does NOT exist. 
# The url stub /blah must map to an existing vdir. 
RewriteCond  c:\blah\$1        !-f
RewriteRule  ^/blah/(.*)$      -  [L]

# If the file does exist, rewrite to the alternative vdir. 
RewriteCond  c:\blah\$1           -f
RewriteRule  ^/blah/(.*)$         /override-vdir/$2    [L]

Вы можете также подстановочный знак "вздор". Чтобы сделать это, Вам была бы нужна конвенция для именования переопределения vdirs. Это выглядело бы примерно так:

# This rule matches, eg, http://server/blah/test.html
# It does nothing if the file c:\blah\test.html does not exist. 
RewriteCond  c:\$1\$2           !-f
RewriteRule  ^/([^/]+)/(.*)$    -  [L]

RewriteCond  c:\$1\$2            -f
RewriteRule  ^/([^/]+)/(.*)$    /override-$1/$2    [L]

Существуют также условия для тестирования существования каталога. Проверьте документ IIRF на детали.

0
ответ дан 4 December 2019 в 02:31

Теги

Похожие вопросы