이 글에서는 주로 PHP가 이미지에 대한 사용자 액세스를 제어하는 방법을 소개합니다. 주로 필요한 친구가 이를 참조하는 것을 방지하는 데 사용됩니다. 그것이 모두에게 도움이 되기를 바랍니다.
http 액세스를 허용하지 않도록 이미지 디렉터리를 설정합니다(이미지 디렉터리의 두 가지 권한 제거: 읽기 및 디렉터리 탐색).
PHP 파일을 사용하고 파일 기능을 직접 사용하여 이미지를 읽어보세요. 이 PHP 파일에서 권한 제어를 수행합니다.
아파치 환경에서는 이미지 디렉터리에 다음 파일을 추가하면 됩니다.
파일명 .htaccess
파일 내용은 다음과 같습니다
# options the .htaccess files in directories can override. # Edit apache/conf/httpd.conf to AllowOverride in .htaccess # AllowOverride AuthConfig # Stop the directory list from being shown Options -Indexes # Controls who can get stuff from this server. Order Deny,Allow Deny from all Allow from localhost
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을 사용하여 완료할 수 있습니다.
구성 파일 수정
location / { root /usr/local/nginx/html; auth_basic “Auth”; auth_basic_user_file /usr/local/nginx/conf/htpasswd; index index.php index.htm; }
auth_basic "Auth"의 Auth는 팝업 상자의 제목입니다(사용자 이름과 비밀번호 입력).
auth_basic_user_file /usr/local/nginx/conf/htpasswd; /local/nginx /conf/htpasswd는 비밀번호를 저장하는 파일입니다
PHP는 이미지 핫링크를 금지합니다
1. 이미지 링크가 허용된 호스트 도메인 이름은 www.test.com
2이라고 가정합니다.
SetEnvIfNoCase Referer “^http://www.test.com/” local_ref=1 <FilesMatch “.(gif|jpg)”> Order Allow,Deny Allow from env=local_ref </FilesMatch>이 간단한 응용 프로그램은 사진의 핫링크 문제를 해결할 수 있을 뿐만 아니라 약간의 수정만으로 모든 파일의 핫링크 문제를 예방할 수도 있습니다.
위 방법을 사용하여 지정되지 않은 호스트의 사진을 연결하면 사진이 표시되지 않습니다. "핫 링크 금지" 사진을 표시하려면 mod_rewrite를 사용하면 됩니다.
먼저 Apache를 설치할 때 –enable-rewrite 매개변수를 추가하여 mod_rewrite 모듈을 로드합니다.
"핫링크 금지" 사진이 abc.gif라고 가정하면 httpd.conf에서 다음과 같이 구성할 수 있습니다:
RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\.)?test.com /.*$ [NC] RewriteRule \.(gif|jpg)$ http://www.test.com/abc.gif [R,L]호스트의 이미지가 도난당하면 abc.gif "핫링크 금지" 사진만 표시됩니다!
관련 권장사항:
Baidu 및 Sogou 웹사이트를 PHP에 포함시키는 방법
위 내용은 PHP에서 이미지에 대한 사용자 액세스를 제어하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!