2011-08-04 4 views
4

저는 고객을위한 사이트를 만들고 이메일 주소, FTP 계정, Google 애널리틱스 계정 등을 만듭니다.데이터베이스에 사용자/클라이언트 암호 저장 중? 의견이 필요합니다.

새로운 고객이 생겨나면서 모든 것을 관리하기가 어려워졌습니다. 그 정보. 그래서 필자는 자신 만의 PHP, MySQL 기반의 관리 패널을 구축하여 필요한 데이터를 저장할 수 있도록했습니다.

종종 고객이 사용자 이름과 암호를 다시 보낼 수 있는지 묻습니다. 현재 이러한 데이터는 암호화되어 TrueCrypt 컨테이너에 저장된 Excel 테이블에 저장됩니다. 내 일의 성격 상, 그 컨테이너를 USB 스틱에 올려 놓고 나에게 가져다 놓은 다음 다른 컴퓨터에 연결하고 필요한 암호를 입력해도 암호를 해독 할 수 있습니다 (키로거를 생각하면됩니다).

어쨌든 긴 이야기를 짧게 줄이기 위해 나는 그 모든 것을 인터넷에 집어 넣어야하는 시점에 왔습니다. 가장 큰 문제는 FTP, 전자 메일 계정 등의 암호를 보호하는 방법입니다. 암호를 다시 보내야하기 때문에 해시 함수를 사용하는 것은 옵션이 아닙니다. 이미 클라이언트에게 그 정보를 모두 보관하는 것이 안전하지 않다고 설명하려고 시도했지만 돈을 내지 않습니다. 내 말 듣고 싶어 :)). 이것은 내가 좋아하지 않는 암호화/해독 옵션 (또는 내가 틀렸어)만을 남겨 둡니다.

마침내 제 질문은 : 저에게 조언이 있습니까? 내 상황에서 너는 무엇을 할 것인가? 로그인 양식 외에도 .htpasswd를 사용하여 디렉토리를 보호하는 옵션에 대해 어떻게 생각합니까?

감사!

+0

글쎄, 당신이 무엇을하더라도, 당신이 그것을 가로채는 것에 대해 걱정된다면, 그것을 보관할 사이트에서 SSL을 사용하십시오. – Devin

+4

내 고객이 비밀번호를 잊어 버리면 관련 서비스에서 새로운 비밀번호를 요청할 수 있도록 도와줍니다. 나는 가능할 때 그들의 암호에 대해 알지 못하게한다. 나는 이것이 어떤 고객이 될 수있는 방법을 고려할 때 전체적으로 도움이되지 않는다는 것을 알고 있지만, 일반적으로 패스워드를 복구 할 수 없다고 설명하는 것이 일반적으로 도움이된다. – Brad

+0

@Devin, 트랙에서 벗어난 SSL은 클라이언트에서 서버로 전송되는 데이터가 암호화 된 보안 채널을 통해 전송된다는 것을 보장하며 시스템이 손상되지 않는다고 보장하지 않습니다. – Kumar

답변

6

이미 사용자 이름/암호를 다시 보내면 새 암호를 보낼 수없는 이유가 없습니다 ... 이렇게하면 "zomg가 될 수있는 모든"암호를 무시하고 해시 함수를 사용하여 암호를 저장할 수 있습니다 해독 된 "우려를 제기했다.

사용자 이름 자체가 매우 쓸모 없기 때문에 사용자 이름을 암호화 된 형식으로 저장하면 많은 보안이 유지 될지 모르겠습니다.

+1

스프레드 시트에서 이전 암호를 조회하는 데 너무 많은 시간이 소요되는 경우 모든 웹 서비스로 이동하여 암호 변경을 요청할 시간이 있는지 의심 스럽습니다. –

+1

물론 고객이 모니터 옆에 붙이기 위해 포스트잇 또는 두 가지에 투자해야한다고 말하면됩니다. 그것은 고객을 도울 수있는 한 가지입니다. 그것은 화장실을 내리고 화장실을 닦아내는 또 다른 방법입니다 ... –

+0

미리 정의 된 이메일에서 클라이언트가 자동으로 새로운 무작위 암호 (1 차 사용시 변경 될 수 있음)를 보낼 수 있습니다. 요청에 따라. 이 방법으로 클라이언트는 문제를 혼자서 처리 할 것이고 아마 post-it 메모리 확장에 곧 투자 할 것입니다! – laurent

2

데이터베이스에 해시 된 비밀번호를 저장하는 것은 옵션이 아닙니다. 암호를 잊어 버린 경우 누군가를 변경하여 서버를 해킹하는 경우보다 암호를 변경하면 문제가 발생하지 않는다고 고객에게 설명하십시오.

+0

바로! 항상 새 암호를 보냅니다. – laurent

0

암호를 클라이언트로 보내기 전에 암호를 변경하는 것이 옵션이 아니면 DB에 마스터 암호로 암호화하여 저장합니다.

암호를 암호화/암호 해독하는 데 PHP mcrypt을 사용할 수 있습니다. 마스터 비밀번호를 아무 곳에 나 저장하지 않으면 안전 할 것입니다.

마스터 암호로 암호를 해독하고 mail() 함수를 통해 클라이언트에 자동으로 보내는 시스템을 구현하는 것이 어렵지 않습니다.

+0

암호를 "보안"서버에 저장하고 "안전하지 않은"전자 메일로 일반 텍스트로 보내려면 암호를 왜 암호화해야합니까? 이메일로 임시 비밀번호 만 보낼 수 있으며 클라이언트는 1 차 사용시 비밀번호를 변경해야 이전 비밀번호를 기억/해독 할 필요가 없습니다. – laurent

2

기술적으로 말하자면, 웹 응용 프로그램에 대한 mcrypt를 사용한 SSL 암호화는 분명한 해결책이지만이 루트를 내려 가지는 않을 것이고 합법적으로 100 % 분류 될 것입니다.

우선 웹 스크립트가이 정보에 액세스하는 것을 허용하지 않으므로 MySQL 데이터베이스를 너무 빡빡하게 묶어서 재미 있지는 않습니다 (예 : 서버에 단일 데이터베이스 1 개, 단일 사용자 1 개, 사용 권한을 최대한 많이 제한, 루트 액세스, 서버에서 실행중인 서비스 만 가능, 가능하지 않은 경우 서버 종료 등), SSH를 통해서만 데이터를 접하게됩니다. 서버 루트를 사용하여 절대로 정보에 액세스하지 마십시오. 비밀 번호를 가능한 한 많이 설정하고 가능한 한 루트 액세스를 강화하고 완전히 잊어 버리십시오.

다음은 고객이 데이터가 잘못 처리되어 손실이나 손해가 발생했음을 완전히 배제하는 법적 문서에 서명하게합니다. 나는 그들이 위험을 완전히 이해하고 언급 된 목록이 완전하지 않다는 내용의 문서에 서명하도록 만들 것입니다. 가능하면 옵트 인 (opt-in)과 강제 (compulsory)가되지 않도록 할 것입니다.

이것은 무서운 지역이며 나는이 개인적으로 행운을 비 롯한 적이 결코 없으며 귀하의 전문 면책 보험이 최신인지 확인합니다.

관련 문제