Запретить выполнение кода IIS7 с помощью web.config

Я хочу запретить пользователям запускать определенные расширения в папке загрузки (/assets/public/) веб-приложения. Пользователи могут загружать файлы изображений, размер которых также изменяется во время загрузки. Но для большей безопасности я хочу запретить такие скрипты, как aspx, asp, php...

У меня есть текущий код, который блокирует все расширения, но я хочу разрешить такие расширения, как .jpg:

<location path="assets/public">
    <system.web>
        <authorization>
            <deny users="*"/>
        </authorization>
    </system.web>
</location>
<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

Также у пользователей нет FTP-доступа, а приложение предварительно скомпилировано.


person HasanG    schedule 10.04.2011    source источник
comment
Вы имеете в виду случай хостинга? Когда пользователь, использующий локальный Web.config, регистрирует собственное расширение для использования?   -  person abatishchev    schedule 10.04.2011
comment
Пользователи предоставили доступ для загрузки только к активам/общей папке, а у клиента нет FTP. Я не хочу, чтобы пользователь или хакеры могли запускать удаленные сценарии.   -  person HasanG    schedule 10.04.2011
comment
Пожалуйста, опубликуйте предполагаемую конфигурацию пользователя для взлома   -  person abatishchev    schedule 10.04.2011


Ответы (2)


Пытаться

<httpModules>
    <clear />
</httpModules>

or

<location path="." inheritInChildApplications="false">
</location>
person abatishchev    schedule 10.04.2011
comment
Обнаружен параметр ASP.NET, который не применяется в режиме интегрированного управляемого конвейера. ошибка после первого варианта, а второй не работает. - person HasanG; 10.04.2011
comment
@Hasan: см. этот вопрос по первому выпуску - person abatishchev; 10.04.2011

Вот как я решил это с помощью global.asax и маршрутизации. Просто добавил эти правила:

routes.MapPageRoute("any", "assets/public/{file}.{ext}", "~/e/404.aspx");
routes.MapPageRoute("any-sub","assets/public/{sub}/{file}.{ext}","~/e/404.aspx");

routes.Ignore("{any}.jpg");
routes.Ignore("{any}.png");
routes.Ignore("{any}.gif");
routes.Ignore("{any}.pdf");
person HasanG    schedule 12.04.2011