2013-12-22 3 views
0

인증 된 사용자에게 다양한 양식 (PDF, MP3, MP4 등)의 컨텐츠에 대한 액세스 권한을 부여하는 사이트가 있습니다. 이 사이트는 LAMP의 제 3 자 개발자가 저를 위해 개발했습니다. 사용자는 MySQL DB에 저장된 사용자 이름/암호를 사용하여 응용 프로그램을 인증합니다. 그들은 Apache, MySQL 또는 다른 메커니즘으로 인증하지 않습니다.자바 스크립트 파일에 대한 액세스 보호

최근에 사이트 침투 테스트에서 몇 가지 명백한 취약점이 확인되었습니다. 내 머리를 긁적 거리는 것은 자바 스크립트 파일을 다운로드하기위한 인증 요구 사항입니다. 브라우저가이 JS 내용에 액세스하여 응용 프로그램을 실행해야한다는 것은 명백히 적어도 일부 파일을 공개적으로 노출시키는 것을 의미합니다.

내 질문은 다음과 같습니다. 응용 프로그램에 로그인하지 않은 사용자가 특정 파일에 액세스하지 못하게 방지하는 방법이 있습니까?

콘텐츠 파일 용으로 제안 된 .htaccess 버전과 같은 솔루션을 보았습니다. 예 : 내가 공개/개인 폴더에 JS 코드를 분할하는 경우

 Options +FollowSymLinks 
     RewriteEngine on 
     RewriteRule ^(.*)$ ../authorize.php?file=$1 [NC] 

자바 스크립트 난이 방법을 제공보다는 도매를 포함하는 방법은 무엇입니까? 이 자바 스크립트에서 작동합니까?

감사합니다.

답변

0

인증 경로 ... 로그인 경로 만 필요합니다. 이 경로는 공개 자산 만 다운로드하도록 허용합니다. 성공적인 인증은 사용자를 보안 경로로 리디렉션합니다. 로그 아웃 작업은 사용자를 로그인 경로로 리디렉션합니다.

0

공용/개인 폴더로 JS 코드를 분할하는 경우 자바 스크립트를 제공하는 방법이 있습니까?이 방법은 도매를 포함하는 것보다 간단합니다. 이 자바 스크립트에서 작동합니까? authorize.php, psuedocode에서

는 사용자

if $_SESSION['logged in'] && exists '/private/' . $_GET['file'] 
    print '/private/' . $_GET['file'] 
else if exists '/public/' . $_GET['file'] 
    print '/private/' . $_GET['file'] 
else 
    die 

당신은 다음 예를 .htaccess과이 결합 정확히 것처럼 파일을 포함에 기록 공개를 통해 개인 반환 상태 및 파일의 존재에 로그인 체크 그들은 정상적인 .js 파일이었고, 아파치는 PHP 스크립트가 올바른 로직을 수행 할 수 있도록 올바른 링크로 아파치를 변환 시켰습니다.

+0

감사합니다. 나는 그것을 취했고 조금 수정했고 그것은 매력을 발휘했다. .htaccess 파일을 사용하지 않았지만 아파치 site.conf/리디렉션을 사용자가 로그인 한 상태로 리디렉션했습니다. 그렇지 않은 경우 바로 중지하십시오. ("이 리소스에 액세스 할 수있는 권한이 없습니다.") if (! (isset ($ _ SESSION [ 'user_id']) && $ _SESSION [ 'user_id']! 경로에서 '/'를 #strip 찾아서 존재하는지 확인하십시오. $ relative_path = substr ($ _ SERVER [ 'REQUEST_URI'], 1); if (file_exists ($ relative_path)) readfile ('./private'. $ _SERVER [ 'REQUEST_URI']); else die ("파일을 찾을 수 없습니다.". $ relative_path); – user3127522