ASP.NET 사이트에서 이미지 핫 링크를 방지하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/648592

  •  19-08-2019
  •  | 
  •  

문제

사람들이 호스팅 된 ASP.NET 웹 사이트의 이미지에 핫 링크를 방지하는 가장/가장 간단한 방법은 무엇입니까? 모든 이미지/리소스가 핫 링크를 방지 할 필요는 없으며 사이트의 특정 이미지/리소스에 대한 핫 링크를 방지하고 싶습니다. 참고로. 그것은 Godaddy.com에서 호스팅이므로 IIS 트릭은 작동하지 않을 것입니다.

도움이 되었습니까?

해결책

ASPX 페이지를 통해 이미지를 스트리밍하는 것은 좋은 솔루션입니다. 추천자는 해킹 될 수 있지만.

당신이 할 수있는 것은 보안에 관심이있는 경우 독특한 소금 (키워드)을 사용하고 MD5 (SHA-1 또는 SHA-2)에 대해 생성하는 것입니다. 현재 에포크 시간을 실행하여 이미지를 만료합니다. 이 "키 코드"를 쿠키에 저장하십시오. 이미지가 제공 될 때마다 기본적으로 쿼리 스트링을 통해 이것을 전달합니다. 검증은 다른 쪽 끝의 ASPX에서 발생합니다. httprequestModule 또는 global.asax 페이지를 사용하여 각 요청 사이에 새로운 "키 코드"를 재생할 수도 있습니다.

오버 헤드가 있지만 누구나 핫 링크를 방해하지 않습니다.

다른 팁

이 작업을 수행하는 가장 간단한 방법은 IIS 7.0의 Urlrewrite를 사용하는 것입니다.

https://help.maximumasp.com/kb/a738/using-url-rewrite-to-prevent-image-hotlinking.aspx

<configuration>
<system.webServer>
    <rewrite>
        <rules>
            <rule name="PreventImageHotlinking" enabled="true" stopProcessing="true">


<match url=".*\.(gif|jpg|png)$" />
  <conditions>
                        <add input="{HTTP_REFERER}" negate="true" pattern="^$" />
                        <add input="{HTTP_REFERER}" negate="true" pattern="http://www.YourDomain.com/.*" />
  </conditions>
  <action type="Rewrite" url="/images/hotlinking.jpg" />
</rule>
            </rules>
        </rewrite>
    </system.webServer>

HTTP 참조 헤더 필드에 사이트가없는 이미지 요청을 거부 할 수 있습니다. 그것이 이론입니다. 애플리케이션에서 요청을 제어하려면 ASP 페이지를 통해 모든 이미지를 스트리밍해야합니다 (직접 연결하는 것과는 달리).

내가 영리하다고 생각한 한 가지는 이미지의 맨 아래에 추가 부분을 추가 한 다음 CSS 스프라이트 기술을 사용하여 사이트에 표시 될 때 차단하는 것입니다. 순진한 핫 링크는 추가 부분이 표시됩니다. 이것은 이미지가 왜곡 되었기 때문에 다른 사이트에서 제대로 보이지 않으며 여분의 부분을 사용하여 자신의 URL 또는 원하는 것을 표시 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top