2011-01-28 1 views
0

포함을 사용하여 HTML이나 CSS에 포함될 나는 폴더 전체를 복사에서 사람을 방지하기 위해, 내 이미지의 소스를 숨길 수 있습니다.이것은 무엇을 의미합니까? 재 : PHP <a href="http://en.wikipedia.org/wiki/Data_URI_scheme#Inclusion_in_HTML_or_CSS_using_PHP" rel="nofollow">http://en.wikipedia.org/wiki/Data_URI_scheme#Inclusion_in_HTML_or_CSS_using_PHP</a></p> <p>를 사용하여 HTML이나 CSS에 PHP

전에 IONCUBE를 사용해 보았습니다. 그러나 이제는 더 간단한 구현을 원합니다.

PHP 파일의 난독 화가 아니라 생성 된 HTML 페이지 소스 난독 화 기술을 알고 싶습니다.

편집 : 생성 된 HTML 페이지의이 코드 부분을 난독 처리하고 싶습니다.

<div id="ImgHolder"> 
     <img src="./images/blank.gif" id="FullSizeImageTail"/> 
     <img src="http://blah.blahblah.edu/random/<?=$_GET['random']?>/<?=$_GET['random2']?>" id="FullSizeImage"/> 
    </div> 

답변

2

이미지로드를 수행하는 빠른 PHP 스크립트를 작성할 수 있습니다.당신은 모든 이미지에서 분리 디렉토리에이 과정 스크립트를 넣어 다음과 같이 여기에 연결할 수 있습니다

<img src="http://blah.blahblah.edu/path/to/scripts/image.php" id="c" /> 

그리고 image.php 파일은 다음과 같이 보일 것이다 :

$file = '/path/to/yourimage.png'; 
$size = getimagesize($file); 
$type = $size['mime']; 
header('Content-type: '.$type); 
print file_get_contents($file); 
exit; 

물론 image.php에 변수를 제공하고 image.php 파일에서 특정 파일을 가져올 수 있습니다. 예를 들어

:

<img src="http://blah.blahblah.edu/path/to/scripts/image.php?n=<?=base64_encode('my_image.png')?>" id="c" /> 

PHP는 $_GET 변수에 대한 검사 :

if(isset($_GET['n'])) { 
    $file = '/path/to/'.base64_decode($_GET['n']); 
    if(file_exists($file)) { 
    $size = getimagesize($file); 
    $type = $size['mime']; 
    header('Content-type: '.$type); 
    print file_get_contents($file); 
    exit; 
    } 
} 

편집 :를 나는 당신의 그림을 다운로드 등록 된 사용자에 대해 걱정하고 다른 의견에 읽어 보시기 바랍니다. 또한 hotlinking을 막을 수 있습니다 (해당 항목에도 관심이있는 경우). 상단에 image.php 파일에이를 포함시켜야합니다.

//Don't allow hotlinking 
$referer = explode("/", $_SERVER['HTTP_REFERER']); 
if($referer[2] != "blah.blahblah.edu") { 
    $my_img = imagecreate(265, 90); 
    $background = imagecolorallocate($my_img, 0, 0, 255); 
    $text_color = imagecolorallocate($my_img, 255, 255, 0); 
    $line_color = imagecolorallocate($my_img, 128, 255, 0); 
    imagestring($my_img, 4, 30, 25, "Hot Linking Not Permitted", $text_color); 
    imagestring($my_img, 4, 30, 50, "blah.blahblah.edu", $text_color); 
    imagesetthickness($my_img, 5); 
    imageline($my_img, 30, 45, 230, 45, $line_color); 
    header("Content-type: image/jpeg"); 
    imagejpeg($my_img); 
    exit; 
} 
4

HTML 코드의 난독 화는 완전히 무의미합니다. 똑똑한 HTML 코드와 같은 것은 없으며 HTML 코드가 무엇인지 신경 쓰는 사람은 아무도 없습니다.

어쨌든 난독 화가 끝나면 질문에서 난독 화하려는 코드의 의미는 여전히 분명합니다. 는 HTML 기호를 모두 유지해야

<div id="ImgHolder"> 
    <img src="./images/blank.gif" id="FullSizeImageTail"/> 
    <img src="http://blah.blahblah.edu/random/<?=$_GET['random']?>/<?=$_GET['random2']?>" id="FullSizeImage"/> 
</div> 

음 :

는 당황 할 코드를 살펴 보자. 즉, "div", "img", "src", "id"등을 변경할 수 없습니다.

"ImgHolder", "FullSizeImageTail"및 "FullSizeImage"만 변경할 수 있습니다. 이미지의 주소 등이 남아 있어야합니다. 당신의 웹 사이트의 사용자가 그래서 코드를 볼 수

이 될 수 있습니다

<div id="a"><img src="./images/blank.gif" id="b"/><img src="http://blah.blahblah.edu/random/123/456" id="c"/></div> 

는 것을 정말 아무것도 숨기나요?

+0

http://blah.blahblah.edu/random/123/456이 표시되지 않도록 URL을 숨겨야합니다. 해당 폴더에 많은 중요한 희귀 이미지가있어서 사용자가 enmasse를 다운로드하지 못하도록하고 싶습니다. . –

+1

은 폴더 보호 기능을 제공하므로 마이클 Irigoyen이 제안한 것처럼 PHP (또는 유사한) 스크립트를 통해서만 콘텐츠에 액세스 할 수 있습니다 ... 그러면 htdocs 폴더 계층 구조 외부에 파일을 저장할 수도 있습니다 –

2

실제 페이지 마크 업을 base64 인코딩 할 수 없습니다. 링크 된 Wikipedia 기사는 데이터 URI에 관한 것입니다. 즉, URI가 필요한 페이지에 포함 할 수 있습니다. 이 <a> 태그가 포함되어 있지만 동일한 파일에 링크 된 페이지 만 인라인 할 수 있습니다. 그런 식으로 데이터 URI를 사용하도록 지원하는 브라우저에서 데이터 링크의 페이지로 이동하면 소스 코드가 일반 텍스트로 표시됩니다. 정상적인 링크보다 소스를 난독 화하지 않습니다. iframe 용 Ditto

이 작업을 수행 할 수 있다고해도 쓸모없는 난독 화가 여전히 적용되는 것에 대한 경고가 적용됩니다. Base64 인코딩은 특히 "decode base64"를 Google에 입력하기 만하면 의도적으로 되돌릴 수 있기 때문에 난처한 인코딩입니다.

권한 부여 및 인증없이 모든 이미지를 다운로드하는 사람에 대한 일정 수준의 보호를 원한다면 이미지 파일에 대해 복잡하고 예측할 수없는 이름을 생성하는 알고리즘을 사용하고 디렉토리 색인을 끄는 것이 가장 좋습니다 페이지. 그런 다음 그들은 무차별 대대적 인 명령없이 명시 적으로 전송 한 이미지 만 다운로드 할 수있었습니다.

+0

그래서 base64 인코딩을 배제하십시오. 통찰력을 주셔서 감사합니다 –

0

무의미한 부분은 어쨌든 웹에서 활짝 열려서 아이디어가 있다는 것입니다. 그러나 고객이 한꺼번에 모든 것을 얻지 못하게하려는 것처럼 보입니다. 이것은 1) 디렉토리 목록을 거부하고; 2) 이미지에 다른 이름 지정 체계를 사용하여 자동화 된 추측을 줄입니다.

이 접근법은 마이클의 대답과 달리 악용 가능성이 적습니다. 간단한 숫자 이름 지정 규칙은 순차 명명 규칙을 의미하며 순차 이름은 쉽게 생성 할 수 있습니다.

0

디렉토리의 내용을 나열하지 않도록하십시오.

"웹 사이트에 새 디렉토리 (또는 폴더)를 만들고"index.html "파일을 넣지 않으면 방문자가 모든 디렉토리 목록을 가져올 수 있습니다. 예를 들어, "incoming"이라는 폴더를 만들면 브라우저에 "http://www.example.com/incoming/"을 입력하면 해당 디렉토리의 모든 것을 볼 수 있습니다. 필요합니다. " - http://www.thesitewizard.com/apache/prevent-directory-listing-htaccess.shtml

+0

내 사이트는 이미 암호로 보호되어 있습니다. 등록 된 회원이 그림을 다운로드하지 않도록하고 싶습니다. –

관련 문제