2011-02-04 3 views
0

암호로 보호 된 디렉토리에 이미지가 있지만 정상적인 보호되지 않은 사이트에 이러한 이미지 중 일부를 표시하려고합니다.내 서버의 이미지가 암호로 보호 된 디렉토리에 있음

나는 시도하고 간단한로 표시 : 그것은 입력에 사용자 이름과 암호를 저를 요구하고있다

<img src ='PASSWORD PROTECTED DIR/Image.jpg"> 

.

그러나 실제로 비밀번호로 보호 된 디렉토리 내의 콘텐츠로 이동할 때만 사용자 이름과 비밀번호를 입력하고 싶습니다.

나는 PHP를 사용하고 있습니다.

아이디어가 있으십니까?

+0

PHP를 사용하고 있는지 여부는 관련성이 없습니다. 서버 소프트웨어 란 무엇입니까? 아파치? –

+0

Apache의 가정하에 태그가 지정되었습니다. 다른 서버 소프트웨어 인 경우 변경하십시오 –

답변

0

까다로운 코드가 없어도 기본적으로 해결할 수 없습니다. <img> 명령은 사용자가 직접 요청하는 것과 다르지 않은 정보를 요청할 것이라고 말합니다.

요청을 어떻게 시작했는지 확인하고, 필터링하고, 모든 이미지를 트로프 PHP 파일 등으로로드 할 수 있지만 기본적인 도구로는 불가능합니다.

직접 또는 저울 <img> 태그를 요청하는 이미지는 동일합니다.

1

Apache를 사용한다고 가정합니다.

암호 보호를 정의하는 .htaccess 파일 내의 일부 파일을 제외 할 수 있습니다.

안된

,하지만이 작동합니다 :

<Files "path/to/image.jpg"> 
    Allow from all 
    Satisfy any 
</Files> 

하지만 훨씬 바람직 옵션은 단순히 보호 된 디렉토리 외부에 이미지를 배치하는 것입니다.

0

는, 당신이 보여주고 싶은 이미지에 대한 다음 별도의 파일에 다음과 같이 할 수있는 PHP (imgHandler.php)

<?php 
// Allowed files 
$allowedfiles["image1"] = "./the_dir/Image.jpg"; 
$allowedfiles["image2"] = "./the_dir/Image2.jpg"; 

function getImage($path) { 

    echo file_get_contents($allowedfiles[$path]); 
} 
getImage($_REQUEST['img']); 
?> 

이야 그리고 이후 바로 사용

<img src="imgHandler.php?img=image1" /> 

이는 것 캐싱을 방지하지 않으며 이전에 제시 한 다른 솔루션보다 훨씬 안전합니다.

+0

이것은 전혀 좋은 생각이 아닙니다. 캐싱을 방지하고 IE <8에서 작동하지 않으며 심지어 IE에서 (IIRC) 32 킬로바이트로 제한됩니다. –

+0

IE에서 검사 한 더 바람직한 솔루션으로 내 대답을 편집 했으므로 정확하게 캐시합니다. – NoLifeKing

+0

만큼이나 정교하지만 , 이것은 사용자가 보호 된 디렉토리 (또는 PHP가 읽기 액세스 권한을 가진 서버의 다른 파일)에서 * 모든 리소스를 얻을 수있게합니다. 이것은 심각한 보안 허점입니다. 예를 들어. 허용 된 파일 배열 –

관련 문제