2009-09-09 3 views
3

안녕하십니까. 제 질문을 읽는 분들께 감사드립니다.PHP 파일 보안

나는 잠시 동안 PHP 웹 프로그램을 작업 해왔고 라이브 서버에 저장하기 전에 소스를 보호하기 위해 어떤 조치를 취해야하는지 궁금합니다. 소스가 배포되지 않고 웹 사이트 (사용자가 웹 사이트에 로그인하여 사용)를 통해 액세스됩니다.

먼저 원본 PHP 파일을 찾아서 다운로드하지 못하게하고 싶습니다. 어떤 프레임 워크도 사용하지 않고 있습니다. php와 모든 파일은 index.php라는 홈 디렉토리에 있습니다. 나는 주위를 읽었으며 robots.txt가 숨어있는 데는 효과적이지 않은 것으로 보인다. .htaccess를 추천하는 사람들의 게시물을 여러 번 보았습니다.하지만 비밀번호가있는 디렉토리 내의 파일을 보호하는 것이라고 생각했기 때문에 htaccess를 웹 앱에 적합하게 만드는 방법이 있는지 잘 모릅니다.

둘째, 누군가가 액세스 할 수있는 경우 소스 파일을 보호하고 싶습니다 (서버를 찾은 후 다운로드하거나 서버에 액세스 할 수있는 sys 관리자). 내가 ioncube 같은 소스 암호화의 생각. 내 호스트에도 GnuPG가 있습니다. [잘 모르겠다.] ioncube와 비교하면 어떤 생각이 들까?]

나는 소스 보호에 익숙하지 않아 어떤 아이디어라도 좋을 것입니다. 물론 감사드립니다.)

+0

이 흥미로운 질문이고 난 항상 같은 일을 자신을 궁금했습니다. 필자가 잘 모르고 있기 때문에 필자는 대답으로 게시하지 않을 것입니다. 확장 기능을 기반으로하기 때문에 서버는 응답을 보내기 전에 항상 PHP를 통해 파일을 파이프합니다. 분명히, 당신이 FTP/SSH/SFTP/etc를 통해 접근 할 수 있다면, 당신은 엉성해진다. 당신은 코드 난독 화 프로그램을 시도 할 수 있습니다 ... –

답변

3

를 얻을 수 위의 모든 파일을 가져가 모든 파일은 올바른 .php 확장자를 가지고 있습니다 (.php.inc 또는 그 유사하지 않음)

서버가 실행되는 한 PHP는 아무도 그 소스 코드를 다운로드 할 수 있습니다. (다른 주제 인 코드의 보안 구멍을 무시하십시오.)

mystuff.php.inc의 줄에 포함 된 파일의 이름을 지정하는 것이 일반적이었습니다. 나쁜 생각. 사이트가 "example.com"에 있고 데이터베이스 구성을 config.php.inc에 저장한다고 가정합니다. 누군가이 URL을 추측하면 http://example.com/config.php.inc을 요청하고 데이터베이스 로그인을 일반 텍스트로 얻을 수 있습니다.

구성 및 기타 라이브러리를 bisko answered이라는 하나의 디렉토리에 저장하십시오. 그래서 다음과 같은 디렉토리 구조가 있습니다.웹 서버 설정이 망쳐됩니다 및 일반 텍스트로 .php 파일을 제공하기 시작하더라도

/var/example.com: 
    include/ 
     config.php 
     helper_blah.php 
    webroot/ 
     index.php 
     view.php 

이 방법, 그것은 나쁜 것, 그러나 적어도 당신은 늘 세계에 데이터베이스 세부 사항을 발표합니다.

파일을 암호화하는 데있어 좋은 생각이라고 생각하지 않습니다. 파일은 Apache (또는 사용중인 서버)에서 암호화되지 않아야 액세스 할 수 있습니다. 아파치가 액세스 할 수없는 경우 시스템 관리자 수 너무 ..

내가 암호화가 신뢰할 수없는 시스템 관리자의 해결책이 생각하지 않는다 ..

+0

감사합니다. – Chris

+0

_they는 http://example.com/config.php.inc를 요청하고 데이터베이스 로그인을 일반 텍스트로 얻을 수 있습니다 .._ PHP가 어떻게 브라우저에서 일반 텍스트를 표시하지 않고 반향을 일으키지 않을까요? –

0

첫 번째 사항은 서버 오류에 대한 도움말을 찾아야하는 웹 서버 보안입니다. 기본적으로 보안/잠긴 디렉터리를 사용하거나 웹 서비스를 통해 가상 디렉터리의 파일에 액세스합니다.

두 번째 사항은 소스를 보호하기 위해 obfuscator을 사용하는 것입니다.하지만 파일을 가져온다면 파일을 보호하기 만하면됩니다. 그들이 정말로 관심이 있다면, 그들은 그들이 원하는 것을 얻을 것이다.

+0

누군가가 (obfuscated 또는 not) 서버에서 PHP 파일을 얻을 수 있다면, 더 큰 문제가 있습니다. 하나는 읽기 어려운 파일로 해결할 수 없습니다! – dbr

+0

좋은 지적. 정확히 내가 왜 내 자신의 리눅스 박스를 가지고 아이디어를 얻지 못하는지 이유가있다. 악의적 인 시스템 관리자로부터 코드를 보호하는 좋은 방법이지만 코드를 직접 호스팅하여 코드를 작성하는 경우가 많습니다. 그래서 내가 ioncube로 암호화한다는 아이디어에 도달했습니다. – Chris

0

첫 번째 단계는 웹 사이트 루트에서 불필요한 파일을 모두 꺼내 다른 장소에두고 파일 만 남겨두고 웹에서 호출하는 것입니다. 예를 들어

이 설정이있는 경우 :

/var/htdocs/mysexydomain.com/root/config.php 
/var/htdocs/mysexydomain.com/root/db.class.php 
/var/htdocs/mysexydomain.com/root/index.php 
/var/htdocs/mysexydomain.com/root/samplepage1.php 

그냥 웹 서버가 제대로 .php 파일을 처리하도록 설정되어 있는지 확인 한 단계 그래서 당신은

/var/htdocs/mysexydomain.com/includes/config.php 
/var/htdocs/mysexydomain.com/includes/db.class.php #see the includes dir? :) 
/var/htdocs/mysexydomain.com/root/index.php 
/var/htdocs/mysexydomain.com/root/samplepage1.php