php 파일의 보호는 어떻게 하는 건가요?

병맛폰   
   조회 10478   추천 0    

초보적인 질문인데요. 요즘 php를 배우느라 정신이 없습니다.

php로 mysql과 연동하여 여러가지 해보고 있는데요.

문득 이런 생각이 들더라구요.
mysql에 접속할 때 mysqli_connect(호스트,아이디,비번)...
이렇게 들어가는데요.
php 파일 안에 서버와 아이디와 비번이 그대로 노출되는 상황인데요.


이걸 호스팅하는 곳에 올려 놓으면 분명 웹봇이나 기타 여러 사람들이 다 볼거 아니에요?


막는 방법은 없나요?
제가 생각하는 방법은 get 방식으로 passage라는 일종의 암호를 생성하여 주소로 php로 넘긴다음에 소스 앞줄에 if ($passage)... 
라고 해서... passage라는 제가 정한 암호를 가진 사람만 php에 접근하게끔 하게 할 생각인데요.

이것도 통채로 php파일을 긁어가 버리면 소용없을거란 생각이 듭니다.


php를 안전하게 보호하는 방법은 무엇이 있을까요?
짧은글 일수록 신중하게.
엠브리오 2013-10
요즘 추세를 보니 php 파일 자체를 컴파일하여 바이너리 처리합니다.

IP주소와 MAC어드레스를 넣어서 컴파일할때 암호화처리도 같이 하는것 같더군요.

저렇게 처리하면 php 텍스트 코드를 볼수도 없을 뿐더러
다른 컴퓨터에 복사해도  구동할수 없게 됩니다.
노리 2013-10
php 파일은 웹에서 바로는 않보여요.
이유는 저도.....

만일 바로 보인다면 모든 리눅스 서버 다털리겠죠...^^;

일예로....
지금 이페이지의 서스를 다운받아보시면
php구문은 전혀 않보일꺼에요

아마도 그건 웹을 구동 시키는 모듈아니 php모듈에 답이 있는건 아닐까요?

정 불안할땐
보편적인 경로외에
특이한 나만의 이름으로 넣고 넣고 넣고....
그럼 쫌 낳지 않을까요?
회원K 2013-10
php 파일은 실행의 결과로 출력됩니다.
php 자체가 인터프리터 언어니까요.

따라서 비번이 안에 있다고 해도 노출되지는 않습니다.
문제는 ftp로 해킹되는 경우인데, 계정보안을 잘 해야 합니다.

php 암호화를 하면 좋은데,
많이 쓰는 Zend는 유료이고
이온큐브는 별도의 모듈설치라는 부담이 있습니다.

문제는 dezend 쉽습니다.
양영훈 2013-10
친구가 짠 코드를 본 적이 있는데요...
그 친구는 아이디, 비번, 디비이름을 따로 다른 php파일에 저장하고
그 파일을 외부에서 접속할 수 없는 폴더에 넣어서
필요할때만 불러서 사용하더라구요.
참고하세요.
FOXBI 2013-10
예전에 웹호스팅 회사 근무할때 입점해있던 대부분의 업체들의 홈페이지는

메인 홈디렉토리의 상단에 예측하기 힘든 폴더명 _inc 나 _conf 등 underbar를 붙여서

해당 경로안에 dbconfig 관련 파일을 넣어놓고 include 하는 방식으로 이용하더라고요

../_inc/dbconfig.php  이런식으로..

강윤호님 말씀처럼 php파일자체가 서버함수라 처리된 결과만 뿌려주긴하지만

파일자체를 다져가는 상황을 방지하기 위해 웹으로는 접근 불가능한 경로로 뒀던 업체들이 있었던 기억이 나네요

벌서 6년전 얘기라.. 지금은 어떤지 모르겠군요~
어린왕자 2013-10
웹서버의 모듈에서(mod_php 등) php 을 해석한 뒤 그 결과를 사용자에게 보이기 때문에 php 코드 자체가 사용자에게 넘어가지 않습니다.

웹이 아닌 다른 방법(FTP/SAMBA/WEBDAV 등)으로 해당 디렉토리에 접근이 가능하면 당연히 다 털리고, 이는 Java 등도 동일하게 털립니다.

그래서 접근 자체를 막아둬야 하는데, 유닉스 계열들은 모두 사용자/그룹/기타 등의 권한으로 나뉘어져있고, ftp 등도 chroot 등을 통해서 상위 디렉토리 접근 등을 막는 등 기본적인 조치는 다 취해져있습니다. 그걸 편하게 하려고 루트 디렉토리부터 다 풀어놓거나 하는게 문제죠.

웹서버는 .php 등 등록된 확장자의 파일은 절대 원본 그대로 사용자에게 전송 안해주기 때문에 굳이 include 시키거나 접근이 안되는 디렉토리로 옮기거나 할 필요도 없습니다. 요식행위죠.
     
양영훈 2013-10
질문 당사자보다 오히려 제가 더 배우고 갑니다. 고맙습니다.^^
박동권 2013-10
sql 접속 아이디와 암호는 그냥 저냥 아무거나 만들고 (절대로 내가 쓰는 암호는 안되겠죠)
sql 서버 쪽에서 db에 접근할 수 있는 ip를 정해두면 되지않을까요?
특정 ip에서만 접근하게 해준다거나 localhost 접근만 허용한다거나..
김석중 2013-10
그렇군요. 답변 감사드립니다.
아이트리 2013-10
대부분 DB접속정보(계정/비번)가 들어 있는 스크립트 형태의 PHP파일을 그대로 사용합니다.
서버 사이드 랭귀지라 클라이언트 브라우저에는 결과만 뿌려줍니다.

만약, 접속정보가 노출되었다면.. 서버 자체게 뚫렸다고 봐야겠죠.
서버 보안이 우선이고, 파일 보안은 2차 문제(보안이 매우 중요한 곳만 해당)죠.

개인인 경우 방화벽 설정과 바이러스/백도어만 잘 모니터링 해주면 큰 문제 없을 듯 합니다.


QnA
제목Page 3416/5730
2015-12   1791615   백메가
2014-05   5266705   정은준1
2011-07   6980   참세상맹글기
2015-04   4461   황혼을향해
2011-07   16303   그린웨이
2024-04   1731   컴박
2016-06   6309   hurricane
2024-04   1618   총알탄사나이
2022-09   1913   정진환
2014-01   5254   병따개님
2024-04   3094   후리지아
2011-08   8363   버지니아
2015-05   5346   밧슈
2015-05   5762   AplPEC
2022-09   2200   it초보
2024-05   1819   수퍼싸이언
2011-08   6657   방o효o문
2024-05   2636   신우섭
2021-02   3570   프링글스
2024-05   1452   장동건2014
2021-02   3055   옥동잣
2024-05   2362   장동건2014