웹 디렉토리의 이미지로 직접 탐색을 방지하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/608111

  •  03-07-2019
  •  | 
  •  

문제

액세스하려면 로그인 해야하는 이미지 갤러리 사이트를 만들고 있습니다. 이 사이트는 세션을 사용하여 사용자 이름과 암호를 추적합니다. 로그인 한 사용자는 이미지를 검색하고 결과를 볼 수 있습니다. 아마도 이것은 웹 디렉토리에 이미지를 넣는 것을 의미합니다. 이 디렉토리의 이미지로 직접 탐색 할 수없는 사람들의 로그가없는 상태에서 어떻게 유지합니까?

이것은 MySQL과 함께 PHP 기반입니다.

도움이 되었습니까?

해결책

추천자 헤더를 확인하고 사이트에서 있어야합니다. 또한 쿠키가 귀하에게 전송되는지 확인할 수도 있습니다 (로그인 한).

가장 좋은 방법은 PHP가 웹 디라 외부의 위치에서 이미지를 가져 오는 것입니다.

또한 주석 문자열을 확인하십시오. mod_rewrite를 사용하면 Apache에서 직접이 모든 작업을 수행 할 수 있습니다.

다른 팁

직접 URL을 통해 액세스 할 수없는 폴더에 이미지를 넣고 프로그램이 이미지를 직접 제공하도록합니다.

이미지를 탐색 가능한 디렉토리에 넣지 마십시오. 더 나은 방법은 webroot 외부에 보관하십시오. 요청 된 이미지를로드하고 사용자가 검증되고 확인 된 후 사용자에게 다시 보내는 일종의 사용자 정의 핸들러를 제자리에 두십시오. 이것은 또한 이미지의 뜨거운 링크를 방지합니다.

이미지를 웹 사이트 외부의 폴더에 넣고 프록시 페이지를 사용하여 이미지를 브라우저로 보냅니다. IMG 태그에서 URL로 사용하는 페이지를 다음과 같은 페이지로 만듭니다.

getImage.php? id = 8783475

페이지에서 사용자가 로그인한지 확인하고 매개 변수에서 보낼 이미지를 결정합니다. 페이지의 콘텐츠 유형을 이미지와 일치하는 유형으로 설정하고 "이미지/jpeg"와 같은 이미지 파일을 읽고 응답 스트림으로 직접 전송하십시오.

이미지가 너무 크지 않으면 무단 액세스로부터이를 보호하는 매우 현명한 방법이 있습니다. Outlook Express 첨부 파일 인코딩과 동일한 64 Econding을 Base 64 Econding을 수행하고 세션 객체를 사용하는 ASP 페이지에 코드를 넣을 수 있습니다. 이 주제에 대한 자세한 내용은 ASP의 자습서를 참조하십시오. 사용자가 페이지에 액세스하면 ASP 코드는 사용자가 인증 된 경우 확인합니다. 그가 스크립트가 아닌 경우 이미지를 시각화하지 않고 페이지 코드를 방해합니다. 사용자가 인증되면 스크립트가 전체 페이지를로드하고 Base64는 가시 이미지로 재구성됩니다. 여기서는 일반 이미지가있는 디렉토리가 없지만 이미지가 페이지 HTML에 인코딩되어 스크립트로 즉시 재구성됩니다. 디렉토리에 이미지가 없기 때문에 아무도 브라우저를 직접 가리키려고 시도 할 수 없습니다. 이 사이트를 사용하여 이미지를 인코딩 할 수 있습니다.

http://www.motobit.com/util/base64-decoder-encoder.asp

그런 다음이 태그를 사용하여 HTML 코드의 이미지를 "호출"해야합니다.

img src = "data : image/gif; base64, ...................................... ........ (여기서 위의 사이트에서 얻은 코드를 배치합니다) ...............

끝났어! 사용자가 로그인하지 않으면 이미지에 액세스 할 수 없습니다.

사람들이 이미지 디렉토리에 직접 액세스하지 못하게하십시오.

이미지 갤러리 소프트웨어를 사용자에게 전달하도록하십시오. 필요한 자격 증명을 확인하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top