2012-06-07 2 views
0

PHP에서 비밀번호를 저장하는 가장 안전한 방법은 무엇입니까? 내 응용 프로그램을 사용하는 동안 사용자를 보호하는 데 매우 관심이 많습니다. 암호를 저장하는 최선의 방법을 사용하고 싶습니다. 나는 MD5, SHA1 등과 같은 다양한 암호화 방법에 대해 읽은 적이 있습니다. 또한 "소금"과 해시를 읽었습니다. 누군가가 PHP에서 암호를 저장하는 가장 안전한 방법을 말해 줄 수 있습니까?PHP에서 비밀번호를 저장하는 가장 안전한 방법은 무엇입니까?

+1

sha512 및 소금 – zerkms

+2

여기에 우리가 다시 간다 ... 나는 이것에 대한 복제본을 찾아 보지 않을 것이다. "건설적이지 않다". –

+1

잘 테스트 된 [암호 해싱 라이브러리] (http://www.openwall.com/phpass/)를 사용하십시오. '자신의 것을 굴리지 마라'. – PenguinCoder

답변

0

암호를 저장하고 데이터베이스에 저장하기 전에 암호를 지우십시오. 어떤 상황에서도 암호를 일반 텍스트로 저장하지 마십시오. 한 번 해시 된 일반 암호는 삭제하십시오.

또한 세션 변수를 사용하여 사용자 세션을 저장하고 추적합니다. 브라우저에 저장된 쿠키를 사용하지 마십시오. 타협 할 필요가 없습니다.

올바른 암호 정책을 적용하십시오. 최소한 모든 암호에 최소 길이가 있는지, 사전 단어가 아니며, 모든 숫자가 아니며 가운데에 숫자가 혼합 된 대문자와 대소 문자가 혼합되어 있어야합니다. 기타 Google 객체 비밀번호 정책이 많이 바뀔 것입니다.

2

해시가 포함 된 암호를 저장하면 시스템을 보호 할 수는 없지만 시스템이 손상 될 경우 사용자가 일반 텍스트 암호를 볼 수 없습니다. 보안은 좋은 모니터링과 우수 사례에서 비롯됩니다.

Microsoft이 걸릴 있습니다

많은 웹 응용 프로그램은 사용자가 HTML 양식에 사용자 이름과 암호를 제공 사용자를 인증하는 암호 메커니즘을 사용합니다. 에 대한 문제와 질문은 여기에 고려 같습니다

  • 가 안전하지 않은 채널을 통해 일반 텍스트로 전송 된 사용자 이름과 암호 있습니까? 그렇다면 공격자는 네트워크 모니터링 소프트웨어를 도청하여 자격 증명을 캡처 할 수 있습니다. 여기에 대한 대책은 SSL (Secure Socket Layer)을 사용하여 통신 채널을 보호하는 것입니다 ( ).
  • 자격 증명은 어떻게 저장됩니까? 사용자 이름과 암호를 파일이나 데이터베이스의 일반 텍스트로 저장하는 경우 사용자는 입니다. 응용 프로그램 디렉터리가 적절하게 으로 구성되어 있고 공격자가 파일을 탐색하여 콘텐츠를 다운로드하거나 새로운 권한있는 로그온 계정을 추가하면 어떻게됩니까? 불만을 품은 관리자가 귀하의 데이터베이스에 사용자 이름과 암호를 사용하면 어떻겠습니까?
  • 자격 증명은 어떻게 확인됩니까? 유일한 경우 사용자가 암호 값을 알고 있는지 확인하는 것이면 사용자 암호를 저장할 필요가 없습니다. 대신 해시 값 형식으로 확인자를 저장할 수 있으며 로그온 중에 사용자 제공 값을 사용하여 해시를 다시 계산할 수 있습니다. 자격 증명 저장소에 대한 사전 공격의 위험을 줄이려면 강력한 암호를 사용하고 무작위로 생성 된 소금 값을 암호 해시와 결합하십시오.
  • 초기 로그온 후 인증 된 사용자는 어떻게 식별됩니까? 어떤 종류의 인증 티켓 (예 : 인증 쿠키)이 필요합니다. 쿠키는 어떻게 보호됩니까? 안전하지 않은 채널을 통해 전송 된 경우 공격자 이 쿠키를 캡처하여 응용 프로그램에 액세스 할 수 있습니다. 도난당한 인증 쿠키는 도난당한 로그온입니다.
+0

* 적절한 * 해싱 기술 (* 적절한 * 소금 * 및 * HMAC)을 사용하면 ** 인증 저장소가 손상 될 경우 총 계정 손상을 줄일 수 있습니다. 가정이 이루어지면 상점이 손상 될 수는 없지만 일반 텍스트를 저장하는 것보다 낫지 만 그 가정은 위험 할 수 있습니다 * ... –

+0

@pst - lol, 닫힌 질문에 대한 대답을 편집했습니다 – afuzzyllama

+0

하하, 실제로 . 그리고 닫힌 질문에 대한 내 의견을 편집했습니다 ;-) –

관련 문제