아파치 웹서버 사용시 무단 링크 방지법
현재 접속한 도메인을 체크해서 서버 관리자가 정해준 도메인명과 일치했을 경우, 링크를 허용하는 방법입니다.
아파치 웹서버 환경설정 파일인 "httpd.conf" 파일을 수정해 주시고 리로드 해주십시오.
<Directory />
Options FollowSymLinks
AllowOverride None
<IfModule mod_setenvif.c>
SetEnvIF Referer "http://daum.net" pass // 도메인명을 코딩합니다. (즉, 설정한 도메인명과 현재 접속한 도메인명이 같을 경우 pass 를 반환합니다.)
<FilesMatch ".(gif|jpg|png|bmp|zip|tar|rar|alz|a00|ace|jpg|jpeg|txt|GIF|JPG|BMP|ZIP|TAR|RAR|ALZ|A00|ACE|TXT|mp3|MP3|mpeg|MPEG|wav|WAV|asf|ASF|wmv|WMV|swf|SWF|exe|EXE)$">
// 무단 링크 방지할 파일 확장자를 코딩합니다.
Order deny,allow
deny from all
allow from env=pass // pass 값이 존재할 경우 링크를 허용합니다.
</FilesMatch>
</IfModule>
</Directory>
비슷한 방법으로 쿠키를 사용하는 것입니다.
다음의 설정내용을 httpd.conf에 명시하면 해당 쿠키값이 존재하지 않을경우 퍼미션을 허가하지 않는다.
이외에도 User-Agent 또는 Referer등을 체크하여 링크를 막을 수 도 있다.
SetEnvIf 모듈을 사용하여 httpd.conf 에 설정한다.
(웹서버에 요청이 들어올때 쿠키값으로 check 쿠키변수에 ok라는 값이 들어오면 true를 세팅한다.)
아파치에서 쿠키값을 가지고 있는 요청만을 처리하도록 하면 됨..
보통 버추얼 호스트나 웹 디렉토리 설정에서 allow 또는 deny 설정하는데, 아래와 같이 하면 쿠키값이 있는 요청만을 처리한다.
#무단링크방지
SetEnvIf Cookie check=ok true
<Directory "해당디렉토리">
Options FollowSymLinks Includes ExecCGI
Order allow,deny
allow from env=true #<--- 이부분이 SetEnvIf에 의해 세팅된 변수만 허가함
</Directory>