http 액세스를 허용하지 않도록 이미지 디렉터리를 설정합니다(이미지 디렉터리의 두 가지 권한 제거: 읽기 및 디렉터리 탐색).
PHP 파일을 사용하고 파일 기능을 직접 사용하여 이미지를 읽습니다. 이 PHP 파일에서 권한 제어를 수행합니다.
Apache 환경에서는 이미지 디렉터리에 다음 파일을 추가하면 됩니다.
파일 이름 .htaccess
파일 내용은 다음과 같습니다
iss, nginx 등 다른 웹 환경도 비슷합니다.
class imgdata{ public $imgsrc; public $imgdata; public $imgform; public function getdir($source){ $this->imgsrc = $source; } public function img2data(){ $this->_imgfrom($this->imgsrc); return $this->imgdata=fread(fopen($this->imgsrc,'rb'),filesize($this->imgsrc)); } public function data2img(){ header(“content-type:$this->imgform”); echo $this->imgdata; //echo $this->imgform; //imagecreatefromstring($this->imgdata); } public function _imgfrom($imgsrc){ $info=getimagesize($imgsrc); //var_dump($info); return $this->imgform = $info['mime']; } } $n = new imgdata; $n -> getdir(“1.jpg”); //图片路径,一般存储在数据库里,用户无法获取真实路径,可根据图片ID来获取 $n -> img2data(); $n -> data2img();
이 코드는 이미지를 읽어서 브라우저에 직접 출력하는 코드입니다. 읽어서 출력하기 전에 사용자 권한을 판단합니다.
여기서 PHP가 이미지를 읽을 때는 읽기 경로를 참조하는 것이 아니라 이미지의 내용을 읽은 다음
을 통해 읽는 것을 의미합니다.
Header(); gif png jpg 등 이미지 종류를 입력합니다. 이미지의 내용은 아래에 출력되므로 fread()
를 사용합니다.
실제로 image.php?id=100 을 보면 이 이미지가 브라우저에 표시되는데, 소스 파일을 보면 이미지 경로가 보이지 않고 왜곡된 이미지 내용이 보입니다.
==========================================
QQ스페이스의 암호화된 사진첩과 마찬가지로 비밀번호를 입력해야만 접근이 가능하며, 브라우저에 직접 입력한 암호화된 사진첩의 사진 주소로는 접근할 수 없습니다. 현재 생각으로는 이미지의 주소가 php 파일이고, php를 통해 권한을 확인하고, 이미지를 읽어서 출력하는 것인데, 이 방법 외에 더 간단하고 효율적인 방법이 없을까? 예를 들어, 임시 검색 주소를 생성하고 nginx의 핫링크 방지 플러그인을 사용하시겠습니까?
이를 수행하려면 ngx_http_auth_basic_module을 사용할 수 있습니다.
구성 파일 수정
auth_basic "Auth"의 Auth는 팝업 상자의 제목입니다(사용자 이름과 비밀번호 입력)
auth_basic_user_file의 /usr/local/nginx/conf/htpasswd /usr/local/nginx/conf/htpasswd; 비밀번호를 저장하는 파일입니다
PHP는 이미지 핫링크를 금지합니다
1. 이미지 링크가 허용된 호스트 도메인 이름은 www.test.com
이라고 가정합니다.
2. httpd.conf 수정
이 간단한 응용 프로그램은 사진의 핫링크 문제를 해결할 수 있을 뿐만 아니라 약간의 수정만으로 모든 파일의 핫링크 문제를 방지할 수도 있습니다.
위의 방법을 사용하여 지정되지 않은 호스트의 이미지를 연결하면 이미지가 표시되지 않습니다. "핫 링크 금지" 이미지를 표시하려면 mod_rewrite를 사용하면 됩니다.
먼저 Apache를 설치할 때 –enable-rewrite 매개변수를 추가하여 mod_rewrite 모듈을 로드합니다.
"No Hotlinking" 이미지가 abc.gif라고 가정하면 httpd.conf에서 다음과 같이 구성할 수 있습니다.
호스트 이미지 도용시 "핫링크 금지"라고 적힌 "abc.gif" 사진만 보이실 거에요!