2013-01-22 2 views
0

나는 보통PHP mysqli 로그인을 위해 해시 된 암호를 저장하는 방법이 있습니까?

$password = "password"; 
$mysqli = new mysqli("localhost", "root", $password, "database"); 

대신 내 스크립트에 저장된 일반 텍스트 양식을 저장할 필요없이 mysqli에게 해시 된 암호를 제공 할 수있는 방법이 있나요합니까? 내 스크립트에서 일반 텍스트 암호를 사용하지 않는 것이 좋습니다. 이게 안전한가요

100 % 증명이 아니지만 일반 텍스트를 사용할 수 없게하는 것이 다소 번거롭습니까?

답변

4

Nope; 처음에는 암호 해싱을 사용하지 않아도됩니다. 해시 된 비밀번호로 로그인 할 수있는 경우 해시 된 비밀번호는 본질적으로 이고 비밀번호는입니다.

암호화 할 수 있지만 암호 해독을위한 키도 저장해야하므로 보호하지 않고 암호를 모호하게 만들뿐입니다. 은 누구나 스크립트 파일에 액세스 할 수 있다면을 쉽게 찾을 수 있습니다.

궁극적으로 서버의 파일 시스템 보안에 대한 신뢰를 가져야합니다. 최선의 방법은 문서 루트 외부에 저장되어 있는지 확인하고 읽을 필요가없는 서버의 사용자/그룹이 읽을 수 없도록하는 것입니다.

+0

적어도 평문보다는 이것을 저장하는 좋은 방법이 있습니까? – Akshat

+0

@Akshat 업데이트를 참조하십시오. –

+0

가장 좋은 방법이라고 생각합니다. 100 %가 아니라 암호화 된 형식의 이상한 평가에서 루트 파일 시스템에 저장하려고 생각하고 있습니다.하지만 조금 힘들어서 – Akshat

4

불행히도, 아니요. 암호가 으로 전송 된 내용은 모두입니다. 암호를 해시 할 수있는 작은 함수를 만들지라도 암호는 일반 텍스트로 입력해야합니다. 여전히 해시 된 암호는 암호가됩니다 (MySQL에서 설정 한 것처럼). 따라서 암호는 여전히 일반 텍스트입니다.

PHP는 서버 측 스크립트이므로 아무도이 암호를 볼 수 없으며 클라이언트로 전송되지 않으므로 가로 챌 수 없습니다. 패스워드를 추측하기 어렵고 MySQL 삽입으로부터 스크립트가 보호되어 누구도 해당 경로를 통해 데이터베이스에 액세스 할 수 없도록해야합니다.

관련 문제