⊗ppPmAuRHS 424 of 447 menu

회원가입에 솔트 추가하기

그럼, 여러분은 이미 cmd5/c를 통한 해싱이 비가역적 과정이며, 해시를 획득한 해커는 이 해시를 통해 비밀번호를 얻을 수 없다는 것을 알고 있습니다.

사실 이 주장은 완전히 정확하지는 않습니다. 현재 악의적인 해커들은 인기 있는 비밀번호와 그렇지 않은 비밀번호의 해시 라이브러리를 구축했으며, 어떤 바보도 그냥 해시를 검색함으로써 비밀번호를 알아낼 수 있습니다.

이는 충분히 단순하고 일반적인 비밀번호에 관한 것입니다.

예를 들어, 827ccb0eea8a706c4c34a16891f84e7b라는 해시를 검색해 보세요. 구글 검색 결과에서 바로 이게 비밀번호 s'12345'/s라는 것을 볼 수 있을 것입니다.

충분히 복잡한 비밀번호의 해시는 이런 식으로 추측할 수 없습니다 (시도해 보세요).

그렇다면 문제가 무엇이냐고 물을 수 있습니다. 우리 모두 복잡한 비밀번호로 가입하도록 합시다. 그러나 문제가 있습니다. 대부분의 사용자는 자신의 데이터 보안에 대해 깊이 생각하지 않고 상당히 단순한 비밀번호를 입력할 수 있습니다.

가입 시 최소 글자 수를 n6/n개나 n8/n개로 제한하는 등 더 긴 비밀번호를 생성하도록 강제할 수 있지만, 여전히 s'123456'/s 이나 s'12345678'/s와 같은 비밀번호가 나타날 것입니다.

물론 비밀번호 복잡도를 검사하는 더 똑똑한 알고리즘을 생각해낼 수 있지만, 다른 해결책이 있습니다.

이 해결책의 요점은 다음과 같습니다: 비밀번호에 d솔트/d를 추가해야 합니다. 솔트는 가입 시 비밀번호에 추가되는 특수한 임의 문자열로, 이제 해시는 단순한 비밀번호가 아닌 문자열 솔트+비밀번호, 즉 솔트 처리된 비밀번호에서 계산됩니다.

즉, 가입 시 다음과 같은 작업을 하게 될 것입니다:

<?php $salt = '1sJg3hfdf'; // 솔트 - 복잡한 임의 문자열 $password = md5($salt . $_POST['password']); // 비밀번호를 솔트 처리된 해시로 변환 ?>

이 경우 솔트는 각 사용자마다 다르며, 가입 시점에 무작위로 생성해야 합니다.

이 작업을 수행할 준비된 함수는 다음과 같습니다:

<?php function generateSalt() { $salt = ''; $saltLength = 8; // 솔트 길이 for($i = 0; $i < $saltLength; $i++) { $salt .= chr(mt_rand(33, 126)); // ASCII 테이블의 문자 } return $salt; } ?>

이 함수를 사용하여 우리 코드를 다음과 같이 다시 작성할 수 있습니다:

<?php $salt = generateSalt(); // 솔트 $password = md5($salt . $_POST['password']); // 솔트 처리된 비밀번호 ?>

다시 강조하지만, 이것들은 가입 시의 변경사항입니다. 데이터베이스에는 단순한 비밀번호 해시가 아닌, 솔트 처리된 비밀번호의 해시를 저장합니다.

이게 전부는 아닙니다: 사용자 테이블에는 slogin/s 필드와 spassword/s 필드 외에, 각 사용자의 솔트를 저장할 ssalt/s 필드도 생성해야 합니다.

위에서 설명한 솔트 처리된 비밀번호를 사용한 회원가입을 구현하세요.

한국어
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақКыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
우리는 웹사이트 운영, 분석 및 개인화를 위해 쿠키를 사용합니다. 데이터 처리는 개인정보 처리방침에 따라 이루어집니다.
모두 수락 설정 거부