PHP에서 데이터베이스 암호를 보호하는 방법

PHP 어플리케이션이 데이터베이스 접속을 확립할 때 일반적으로 로그인과 패스워드를 전달해야 합니다.응용 프로그램에 대해 단일 최소 권한 로그인을 사용하는 경우 PHP는 해당 로그인과 암호를 알아야 합니다.그 비밀번호를 보호하는 가장 좋은 방법은 무엇입니까?PHP 코드로 쓰는 것은 좋은 생각이 아닌 것 같습니다.



질문에 대한 답변



일부 사용자가 비밀번호를 데이터베이스에 저장하는 방법에 대한 질문으로 잘못 읽었습니다.그것은 틀렸다.데이터베이스에 접속할 수 있는 패스워드를 보존하는 방법에 대해 설명합니다.

통상적인 해결책은 패스워드를 소스 코드에서 컨피규레이션파일로 이동하는 것입니다.그런 다음 관리 및 설정 파일 보안은 시스템 관리자에게 맡기십시오.이렇게 하면 개발자는 프로덕션 비밀번호에 대해 아무것도 알 필요가 없으며 소스 컨트롤에 비밀번호 기록이 없습니다.




다른 사용자의 서버에서 호스팅하고 있으며 웹 루트 외부에서 액세스할 수 없는 경우 항상 파일에 암호 및/또는 데이터베이스 연결을 입력한 다음 .htaccess를 사용하여 파일을 잠글 수 있습니다.

<files mypasswdfile> order allow,deny deny from all </files> 



가장 안전한 방법은 PHP 코드에 지정된 정보를 전혀 보유하지 않는 것입니다.

Apache를 사용하는 경우 이는 httpd.conf 또는 가상 호스트 파일 내의 연결 세부 정보를 설정하는 것을 의미합니다.이 경우 파라미터 없이 mysql_connect()를 호출할 수 있습니다.즉, PHP는 사용자의 정보를 출력하지 않습니다.

이러한 파일의 값은 다음과 같이 지정합니다.

php_value mysql.default.user      myusername php_value mysql.default.password  mypassword php_value mysql.default.host      server 

그런 다음 다음과 같이 mysql 연결을 엽니다.

<?php $db = mysqli_connect(); 

또는 다음과 같이 합니다.

<?php $db = mysqli_connect(ini_get("mysql.default.user"),                      ini_get("mysql.default.password"),                      ini_get("mysql.default.host")); 



웹 루트 외부에 있는 파일에 저장합니다.




매우 안전한 시스템의 경우 구성 파일(시스템 관리자가 자체적으로 보호)에서 데이터베이스 암호를 암호화합니다.애플리케이션/서버의 기동시에, 애플리케이션은 시스템 관리자에게 복호화 키의 입력을 요구합니다.다음으로 데이터베이스 패스워드를 설정 파일에서 읽어 복호화하여 나중에 사용할 수 있도록 메모리에 저장합니다.복호화된 메모리에 저장되기 때문에 여전히 100% 보안은 아니지만, 어느 시점에서는 ‘충분히 안전하다’고 불러야 합니다.