외부 링크에서 다운로드를 금지할 수 있나요?

브라우저는 신경 쓰지 않지만, 서버는 신경 쓸 수 있습니다. 기본적으로 브라우저가 참조 페이지와 동일한 오리진(origin)으로 요청을 보낼 때, 서버가 요청이 어디에서 왔는지 알릴 수 있도록 referrer 헤더를 포함합니다. 서버는 이 정보를 사용하여 동작을 조정할 수 있으며, 특정 위치로의 액세스를 허용하거나 거부하는 것도 포함됩니다.

우회하기는 쉽지만, 다른 웹사이트에서의 단순한 링크를 방지할 수 있습니다.

location /uploads/ {
    valid_referers  www.example.com;
    if ($invalid_referer) {
        return 403;
    }
}

위 코드에서 www.example.com을 Discourse 인스턴스의 도메인으로 대체하면, 인스턴스의 업로드에 대한 핫링크(hotlinking)를 방지하는 적절한 nginx 구성이 됩니다.

403(허용되지 않음) 반환 대신 다른 동작을 취하고 싶을 수도 있습니다. 예를 들어 Discourse 홈 페이지로 리다이렉트하는 것 등이 있습니다. 이렇게 하려면 대신 다음 코드를 사용할 수 있습니다.

location /uploads/ {
    valid_referers  www.example.com;
    if ($invalid_referer) {
        return 307 /;
    }
}

재빌드(rebuild) 시 구성을 주입하기 위해 app.yml 파일에 무언가를 추가하는 것이 가능해야 합니다. 다만 이 부분은 제가 자세히 살펴본 적이 없어 어떻게 해야 하는지 정확히 알지 못합니다.

4개의 좋아요