저는 Discourse를 설치해서 사용하고 있으며, 매우 만족하고 있습니다. 최근 스팸러들이 내장된 스팸 방지 기능을 우회하는 방법을 찾아냈습니다. 문제는 그들이 게시글에 이미지를 업로드한 후, 즉시 해당 이미지를 수천 명에게 보내는 스팸 이메일에 임베드한다는 점입니다. 게시글을 삭제해도 이 이미지들은 적어도 상당한 시간 동안 여전히 접근 가능한 상태인 것 같습니다.
이로 인해 호스팅 업체로부터 스팸 남용에 대한 불만이 접수되었습니다.
현재 저는 신규 사용자의 이미지 업로드를 비활성화해 두었지만, 이는 지원 포럼인 만큼 좋은 해결책이 아닙니다. 사람들은 첫 게시글에 스크린샷 등을 첨부할 필요가 있기 때문입니다.
이 문제를 해결할 수 있는 실용적인 방법을 찾으신 분이 계신가요?
이미 ^/uploads에 대한 valid_referers 명령의 주석을 해제해 보았지만, 아무런 효과가 없는 것 같습니다. 이미지는 여전히 임베드됩니다:
location ~ ^/uploads/ {
# NOTE: 헤더를 최상위 수준에서 정의하고 상속할 수 없다는 것이 정말 짜증스럽습니다.
#
# proxy_set_header는 설계상 상속되지 않으므로, 헤더가 올바르게 설정되지 않도록 반복해야 합니다.
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Request-Start "t=${msec}";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $thescheme;
proxy_set_header X-Sendfile-Type X-Accel-Redirect;
proxy_set_header X-Accel-Mapping $public/=/downloads/;
expires 1y;
add_header Cache-Control public,immutable;
## 선택적 업로드 안티-핫링크 규칙
valid_referers folivora.ai *.folivora.ai *.llo.ai;
if ($invalid_referer) { return 403; }
# 커스텀 CSS
location ~ /stylesheet-cache/ {
add_header Access-Control-Allow-Origin *;
try_files $uri =404;
}
# 이를 통해 rails를 우회할 수 있습니다
location ~* \.(gif|png|jpg|jpeg|bmp|tif|tiff|ico||avif)$ {
add_header Access-Control-Allow-Origin *;
try_files $uri =404;
}
# SVG에는 추가 헤더가 필요합니다
location ~* \.(svg)$ {
}
# 썸네일 및 최적화된 이미지
location ~ /_?optimized/ {
add_header Access-Control-Allow-Origin *;
try_files $uri =404;
}
proxy_pass http://discourse;
break;
}