2014-09-26 4 views
2

У меня есть один веб-сайт, созданный в IIS, и у корневого веб-ресурса есть несколько подпапок для рисования изображений, css, js-файлов, которые используются в страницах. Однако пользователь может получить доступ к изображениям, если они знают имя изображения (http://hello.com/images/abc.jpg).IIS запрещает прямой доступ к изображениям

Есть ли способ отключить прямой доступ к ресурсам? Обратите внимание, что я только начал изучать asp.net, так что будет здорово, если ответы могут быть немного описательными.

Я узнал о методе перезаписи URL-адресов, но просто не смог заставить его работать.

EDIT: Я помещаю этот web.config в папку с изображениями и теперь делаю наоборот, блокируя изображения на страницах и позволяя им напрямую. Любая помощь приветствуется.

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.web> 
     <identity impersonate="true" /> 
    </system.web> 
    <system.webServer> 
     <rewrite> 
      <rules> 
       <rule name="RequestBlockingRule1" patternSyntax="ECMAScript" stopProcessing="true"> 
        <match url=".*\.(gif|jpg|png)$" /> 
      <conditions> 
         <add input="{HTTP_REFERER}" pattern="^$" negate="true" /> 
         <add input="{HTTP_REFERER}" pattern=" http://iolab023/.*" negate="true" /> 
      </conditions> 
        <action type="CustomResponse" statusCode="403" statusReason="Forbidden: Access is denied." statusDescription="You do not have permission to view this directory or page using the credentials that you supplied." /> 
       </rule> 
      </rules> 
     </rewrite> 
    </system.webServer> 
</configuration> 

ответ

4

Если вы хотите, чтобы предотвратить прямой доступ к контексту (от клиента/браузера), вы можете использовать раздел конфигурации, чтобы заблокировать его. В вашем web.config в корне вашего сайта вы можете использовать эту конфигурацию, чтобы отключить субдир «images» от доступа. Если вы посмотрите на свой applicationhost.config, вы увидите, что этот раздел уже настроен для предотвращения доступа к папке «bin» непосредственно клиентами. Вам просто нужно добавить «изображения» в этот список, либо в applicationhost.config, либо в web.config, как показано ниже.

(если вы не видите никакой конфигурации вообще в applicationhost.config, это значит, что вам нужно установить функцию requestFiltering в IIS с помощью «add/remove programs» или установщика Web Platform).

<configuration> 
    <system.webServer> 
     <security> 
      <requestFiltering> 
       <hiddenSegments applyToWebDAV="true"> 
        <add segment="images" /> 
       </hiddenSegments> 
      </requestFiltering> 
     </security> 
    </system.webServer> 
</configuration> 
Смежные вопросы