>백엔드 개발 >PHP 튜토리얼 >http://www.12306.cn/mormhweb/ 일반 HTTP를 통해 비밀번호를 안전하게 전송합니다.

http://www.12306.cn/mormhweb/ 일반 HTTP를 통해 비밀번호를 안전하게 전송합니다.

WBOY
WBOY원래의
2016-07-29 08:37:051740검색

1. 이론
일반 HTTP에서는 일반 형식의 비밀번호가 일반 텍스트로 서버에 전송되어 처리됩니다. 이는 의심할 여지없이 악당들에게 기회를 제공합니다! 여기서는 비밀번호를 안전하게 전송하는 방법에 대해 이야기하겠습니다!​
비밀번호 자체를 전송하는 것보다 암호화된 형태로 전송하는 것이 좋습니다. MD5는 좋은 선택입니다. 첫째, 서로 다른 리소스가 동일한 MD5 다이제스트를 생성하는 것은 거의 불가능합니다. 둘째, MD5의 인코딩 방법은 되돌릴 수 없습니다. 이러한 기능을 사용하면 악의적인 행위자가 비밀번호를 알 수 있다는 걱정 없이 MD5 다이제스트를 인터넷에서 공개적으로 전송할 수 있습니다. 그런 다음 서버 측에서 동일한 방식으로 비밀번호를 암호화하고 마지막으로 두 문자열을 비교합니다.​
그러나 로그인을 위해 인터넷을 통해 직접 비밀번호 md5를 전송할 수는 없습니다. 왜냐하면 악의적인 사람들이 우리의 비밀번호를 모르더라도 우리 웹사이트에 액세스할 수 있는 권한을 부여할 수 있는 이 특수 문자열은 확실히 알 것이기 때문입니다!​
이것이 바로 공개키와 개인키가 해결해야 할 문제입니다. 먼저 서버가 임의의 문자열을 제공하고, 클라이언트가 임의의 문자열과 비밀번호를 추가한 후 암호화합니다!​
로그인할 때마다 서버에서 다른 임의의 문자열을 생성하므로 비밀번호는 변경되지 않지만 위 방법으로 암호화된 MD5 다이제스트는 전혀 다릅니다. 이렇게 하면 악의적인 사람이 이러한 MD5 다이제스트를 얻더라도 귀하의 비밀번호를 분석할 수 없습니다!​
이 방법에서는 서버에서 제공하는 임의의 문자열을 "공개 키"라고 하며, 수명이 짧고 누구나 사용할 수 있는 비밀번호를 "개인 키"라고 합니다. 사람들은 절대 사용하지 않을 것입니다.​
2. 성취하다
클라이언트 측 Javascript는 기성 md5 알고리즘을 제공하지 않지만 Google에서 "md5 javascript"라고 검색하면 Javascript로 구현된 md5의 예를 많이 얻을 수 있습니다.​
PHP에서는 더 말할 필요 없이 md5() 함수만 사용하면 됩니다! 세션을 사용하여 임의의 문자열을 저장할 수 있습니다. (PHP는 매우 강력합니다~~)
3. 알아채다
JS에서는 한자가 UTF-8 형식이므로 비밀번호가 중국어이고 서버에 저장된 비밀번호의 인코딩 방식이 GB2312라면 두 비밀번호의 암호화된 문자열이 완전히 다릅니다!

위에서는 http://www.12306.cn/mormhweb/의 내용을 포함하여 일반 HTTP를 통해 비밀번호를 안전하게 전송하기 위해 http://www.12306.cn/mormhweb/을 소개했습니다. PHP 튜토리얼에 관심이 있기를 바랍니다. 친구들이 도와줍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.