해시 + 임의의 소금을받는 문자열을 어떻게 sanitize 할 수 있습니까?비밀번호를 적절하게 위조하는 방법은 무엇입니까?
공백을 제거하고 길이를 확인하고 mysqli_real_escape_string을 사용할 수 있지만 충분합니까? filter_var는 정말 유용하지만이 경우에는 도움이되지 않습니다. 맞습니까?
해시 + 임의의 소금을받는 문자열을 어떻게 sanitize 할 수 있습니까?비밀번호를 적절하게 위조하는 방법은 무엇입니까?
공백을 제거하고 길이를 확인하고 mysqli_real_escape_string을 사용할 수 있지만 충분합니까? filter_var는 정말 유용하지만이 경우에는 도움이되지 않습니다. 맞습니까?
변수를 SQL 쿼리에 넣으려면 mysqli_read_escape_string
을 호출하거나 prepared statements을 호출해야합니다.
에는해야 할 다른 위생 처리가 없습니다. 그러나 값이 자유형 사용자 입력 (예 : 드롭 다운 메뉴 대신 텍스트 상자)에서 나올 경우에는 공백을 잘라내어 사용자에게 우의로 소문자로 표시하여 실수로 인한 실수를 바로 잡을 수도 있습니다. . 정말 응용 프로그램에 따라 다릅니다.
먼저 암호가 주어진 유효성 검사 규칙과 일치하는지 확인합니다. 이것을 위해 정규식을 사용할 수 있습니다. 패스워드는 a-z, 0-9, 어쩌면 구두점과 일치 할 수 있으며 특정 길이 (예 : 6-12 자) 이내 여야합니다. preg_match()
을 사용하여 문자열의 내용과 길이를 확인하십시오. preg_match('/^[a-z0-9]{6,12}$/i',$pass)
과 같은 것이 시작일 수 있습니다.
다음으로 암호를 해시 할 수 있습니다. 그렇게하려면 crypt()
함수를 사용할 수 있습니다. 이렇게하면 사용자가 나중에 인증하려고 시도 할 때 비교할 수있는 단방향 암호화 문자열이 생성됩니다.
마지막으로 암호를 저장하려면 mysqli_real_escape_string()
을 사용하여 SQL 삽입 또는 업데이트 문에서 사용할 준비를해야합니다.
강력한 암호에는 소문자와 대문자는 물론 숫자와 함께! @ # $ %^&*(); : <>과 같은 특수 문자를 선택하는 것이 좋습니다. 에서 고르다. 또한 적어도 8 자 이상을 사용하는 것이 가장 좋습니다. –
암호가 아니라 해시를 저장해야합니다. 그 점을 분명히 할 때까지 -1. –
@SyntaxError 강력한 암호는 암호가 아니며 [passphrase]입니다 (https://en.wikipedia.org/wiki/Passphrase). –
신뢰할 수없는 출처에서 해시 (사실 무작위 데이터) + 소금 (실제로 임의의 데이터)을 수신하고 있는데 '위생 처리'를 원하십니까? 아마도 적용 가능한 온전한 정의 (base64 인코딩과 같은 데이터 형식, 최대/예상 길이)가있을 수 있지만 어딘가에 기능상의 보안 실수가 있다고 생각됩니다.
특히 신뢰할 수있는 환경에서 비밀번호를 수락하고 변환하는 대신 신뢰할 수없는 출처의 해시 + 소금을 허용하는 이유는 무엇입니까? 신뢰할 수없는 출처의 해시 + 소금을 수락하면 일반 텍스트로 변환됩니다 (원래 암호를 해싱하고 소금을 칠해 얻은 이점을 잃게됩니다).
정확하게 문자열을 준비하기 위해 살균하십시오. 이 경우 – Jon
해시가 데이터베이스에 있는지 확인하십시오. –
죄송합니다. 가져 오지 못합니다. 입력을 해쉬하고 그 결과가 데이터베이스에 있는지 확인하십시오 ... 위생 처리는 무엇입니까? – deceze