2014-04-29 3 views
-2

코드에서 데이터베이스에 연결하는 PHP 응용 프로그램이 있습니다. 이러한 자격 증명을 안전하게 보관하는 방법이 무엇일까? 이것은 리눅스 서버입니다.안전한 방식으로 PHP 응용 프로그램에서 MySQL에 대한 암호 저장

편집 : 정보에 근거한 의견을 듣고 내 팀과 토론하기 위해 myslef에 대한 의견을 듣고 싶습니다. 나는 암호를 암호화하는 것에 반대하지만, 우리 팀은 확신하지 못한다.

암호가 암호화되면 일반 텍스트의 어딘가에 암호 해독 키를 저장해야하므로 전체 무언가를 무의미하게 만듭니다.

답변

0

적어도 웹 서버를 통해 직접 액세스 할 수없는 구성 파일 안에 넣으십시오.

이 방법으로 누군가를 읽으려면 컴퓨터가 침입해야합니다.

+0

암호화 란 무엇입니까? –

+1

데이터베이스 서버에 자격 증명을 보내야하기 때문에 암호화되지 않은 상태로 배치해야합니다.비밀 번호를 난독 화하기 위해 사용할 수있는 모든 것은 내 생각에 되돌릴 수 있습니다. – Olli

+0

동의합니다, 나는 전문가가 아니지만 그건 내 생각이었습니다. 내 팀에 정보를 제공하기 위해 의견을 정리하면됩니다. –

2

"안전한 방식"이 없습니다. 암호는 해독되거나 해독되지 않아 DB 라이브러리에 전송되어 연결을 설정할 수 있습니다.

사이트의 문서 루트의 외부 파일에 로그인 정보를 저장하는 것이 좋습니다. 이것은 완치가 아니지만 최소한 서버의 설정이 손상되어 실행 대신 PHP 소스를 제공하기 시작하면 파일에 직접 액세스 할 수 없으므로 자격 증명이 유출되지 않습니다.

+0

관리자가 암호를 암호화해야한다고 주장합니다. 어떤 운이나 이유도 알지 못하지만, 그것이 그들이 원하는 것이라면, 나는 이것을하기위한 최선의 방법을 찾아야합니다. –

+1

'$ pw = base64_decode ('blahblahbalbhalblah')'는 관리자가 실제 문제에 대한 이해가없는 체크리스트를 작성하는 전형적인 단서없는 yutz 인 경우 그 문제를 해결하기에 충분할 수도 있습니다. 그러나 다시, 이것은 꽤 무의미합니다. 암호가 자물쇠 인 경우, 이런 종류의 "보안"은 자물쇠 옆에있는 키를 누르는 것입니다. "그래, 잠겨있어 우리는 100 % 안전 해." –

-1

... u는 그것을 어떤 점을 공개 할 필요가 다른 사람에 동의하지만, u는 encrption 설정 한 후, PHP http://docs.php.net/manual/en/function.crypt.php

첫 encrpyt이 기능 또는 다른 기능을 사용하여 암호의 토굴 기능을 사용할 수 있습니다 데이터베이스 암호로 암호화 된 암호 ... [주 - mysql이 crpt에 의해 반환 된 값을 암호로 저장하도록 허용하는 지 알고 싶습니다.] db frm php에 연결하는 동안 원래 암호를 crpyt 함수 [또는 위의 encrpt 함수/메서드] 그것을 변수에 저장하고 conne 동안이 var 언급 당신이 바로 당신이 직접 연결할 때 별도의 DB 사용자를 만들 수 있습니다 해결하려면 암호 을 기억에서 힘든 시간을 보내고됩니다 MySQL로 연결하면 ..

$encrpted_pass = crypt($original_password); 
$con = mysql_connect("localhost","mysql_user",$encrpted_pass); 

단점 을 cting

2) 다른 방법은 별도의 파일에 암호를 저장하고 파일의 내용을 검색하여 var에 저장 한 다음 나중에 var를 사용하여 MySQL DB에 연결하는 것입니다. 이렇게하면 암호가 공개되지 않습니다. DB에 연결하는 데 사용되는 파일에 사용됨

0

defense in depth을 적용하고 전용 MySQL 사용자가 로컬 호스트에서만 연결하도록 허용하십시오. 연결 자격 증명이 어떻게 든 유출 되더라도 데이터베이스에 연결하는 유일한 방법은 웹 서버를 통한 것입니다.

공격자는 웹 서버에 액세스하여 임의 코드/명령을 실행할 수 있어야합니다. 그럴 가능성이있는 경우 이미 너무 늦었습니다.

+0

검보 감사합니다. 우리는 애플리케이션에 로컬 인 MySQL 인스턴스를 가지고있다. 그래서 내 논리는 공격자가 웹 서버에서 쉘을 가져와야 할 데이터베이스에 접근한다는 것입니다. 그리고 모든 것이 이미 설정되었습니다. –

관련 문제