2009-12-02 2 views
1

우선, 완벽한 보안 솔루션과 같은 것은 없다는 것을 알고 있습니다.MySQL 로그인 정보의 안전한 (r) 저장소?

그렇다면 코드를 다운로드하여 골라내어 누군가가 MySQL 데이터베이스를 손상시키지 않도록하려면 어떻게해야합니까? PHP에 대한 내 경험에 비추어 볼 때, 어떤 점에서 코드 안에 코드를 저장하는 것이 의무적 인 것처럼 보입니다. 변수, 상수 및 (사용자 정의) 함수 이름을 모호하게하는 리팩토링이 유익 할 수있는 곳을 알 수 있지만 결국에는이를 통해 추적하고 DB 로그인 정보로 파일을 찾을 수 있습니다.

아이디어가 있으십니까?

답변

4

일반적으로 MySQL 인증 정보는 외부 구성 파일에 저장됩니다. 웹 기반 앱에서 사용하는 MySQL 사용자는 SELECT, INSERT, UPDATE, DELETE과 같이 제한된 권한이 부여되고 ALTER, DROP, DELETE과 같은 권한은 부여되지 않습니다. 코드를 일반에 공개하려는 경우 개인 구성 파일은 포함하지 않고 일반/지시/최소 구성 파일을 포함합니다.

암호화 된 형식으로 MySQL 인증 정보를 저장하는 것은 개인 키/암호화 해제를 로컬로 저장해야하므로 다소 어리석은 일입니다. 인증되지 않은 사용자가 서버의 코드 또는 구성 파일을 보는 것이 쉽지 않은 경우 문제는 코드가 아닙니다. 서버 설정은 &입니다.

1

보안은 웹 루트 외부의 하드 코드 된 정보 (구성 파일 또는 스크립트에서)를 저장하고 프로덕션 코드에서 오류 메시지를 표시하지 않음으로써 도움을받을 수 있습니다. 그렇게하면 사용자가 userValidate() expects exactly three paramaters을 볼 수 없기를 바랍니다.

1

pygorex1이 맞으면 "외부"는 웹 루트 외부의 파일을 의미하는 외부 구성 파일을 사용해야합니다. 따라서 사용자가 소스 코드를 볼 수 있도록 웹 서버에 구성 오류가 있어도 브라우저를 통해 직접 액세스 할 수 없기 때문에 데이터베이스 자격 증명을 볼 수 없습니다.

pygorex1 또한 사용자 권한에 적합합니다. mysql 사용자의 접근을 최소한으로 제한하는 것이 항상 선호된다. 해커가 사용자의 mysql 암호와 사용자 이름을 얻지 만 사용자 권한이 예를 들어 SELECT 쿼리에만 국한되는 경우에는 큰 피해를 입을 수 없습니다. 그가 잊어 버린 점은 mysql 사용자는 localhost (또는 웹 응용 프로그램이있는 호스트)에서만 로그인 할 수 있어야하고 허용 된 호스트에는 와일드 카드를 사용하지 않아야한다는 것입니다.

관련 문제