Предотвращение хотлинкинга не работает IIS 10 - Windows server 2016 - PullRequest
0 голосов
/ 13 января 2020

Я не знаю, как предотвратить хотлинкинг на IIS 10 - web.config. Я нашел решение на Google, но, кажется, не работает, это мой код:

            <rule name="Hotlinking Preventing" stopProcessing="true">
                <match url=".*\.(png|jpe?g|gif)" />
                <conditions>
                    <add input="{HTTP_REFERER}" pattern="^$" negate="true" />
                    <add input="{HTTP_REFERER}" pattern="^https?://(m\.)?domain\.com/.*$" negate="true" />
                </conditions>
                <action type="Rewrite" url="/assets/images/hotlinking.png" />
            </rule>

Любая идея :(? Спасибо большое.

1 Ответ

1 голос
/ 14 января 2020

Как разработчик веб-сайта иногда не хотят, чтобы изображения на нашем веб-сайте имели прямые ссылки и показывались на других веб-сайтах. В некоторых случаях это может привести к большой пропускной способности сети для наших центров обработки данных, что означает, что мы платим за того, кто использует наши изображения.

Например, ваш веб-сайт www.sample1.com, у вас есть изображение http://www.sample1.com/test.jpg и www.sample2.com использовали ваше изображение на www.sample2.com, поместив тег в HTML, это может привести к тому, что сетевой запрос поступит на ваш сервер, потребляя ваши ресурсы.

enter image description here

, если пользователь попадает на www.sample2.com, посещая http://www.sample1.com/test.jpg, для веб-сервера www.sample1.com HTTP-запрос для этого конкретного изображения будет иметь заголовок HTTP с именем "referer" со значением "http://www.sample1.com ....". Здесь мы будем проверять и блокировать запрос.

правило перезаписи URL:

 <rule name="Prevent Image Hotlinking">
<match url=".*\.(jpg|jpeg|png|gif|bmp)$" />
<conditions>
                    <add input="{HTTP_REFERER}" pattern="^$" negate="true" />
                    <add input="{HTTP_REFERER}" pattern="^http://www.sample1.com/.*$" negate="true" />
</conditions>
<action type="Rewrite" url="/img/no_hotlinking.png" />

enter image description here

enter image description here

Если это все еще не работает, попробуйте отключить кэш и повторите попытку.

, если вы хотите заблокировать несколько сайтов, вы также можете использовать переписать Карта и установить список сайта.

<system.webServer>
  <rewrite>
    <rules>
      <rule name="Blacklist block" stopProcessing="true">
          <match url="(?:jpg|jpeg|png|gif|bmp)$" />
          <conditions>
              <add input="{HTTP_REFERER}" pattern="^https?://(.+?)/.*$" />
              <add input="{DomainsBlackList:{C:1}}" pattern="^block$" />
              <add input="{REQUEST_FILENAME}" pattern="splog.png" negate="true" />
          </conditions>
          <action type="Redirect" url="http://www.hanselman.com/images/splog.png" appendQueryString="false" redirectType="Temporary"/>
      </rule>
    </rules>
    <rewriteMaps>
              <rewriteMap name="DomainsBlackList" defaultValue="allow">
                  <add key="google-chrome-browser.com" value="block" />
                  <add key="www.verybadguy.com" value="block" />
                  <add key="www.superbadguy.com" value="block" />
              </rewriteMap>
    </rewriteMaps>
  </rewrite>
</system.webServer>
...