PostgreSQL에서 암호의 데이터 유형은 무엇입니까?
암호화를 수행하는 데이터 유형이 있으므로 암호가 데이터베이스에서 보호된다는 것을 읽었습니다 .
나는 지금 varchar
암호를 저장 하는 데 사용합니다. 나는 어떻게 든 SHA-512 기능을 암호에 적용하고 해당 데이터를 일반 텍스트 암호가 제거되도록 어딘가에 저장해야한다는 생각을 가지고있었습니다.
그러나 Perl의 데이터 유형은 PostgreSQL에 varchar보다 더 나은 방법이 있음을 시사합니다.
PostgreSQL에서 암호의 데이터 유형은 무엇입니까?
Jeff는 You 're Probably Storing Passwords Incorrectly 라는 좋은 기사를 가지고 있습니다. 이 문서에서는 데이터베이스에 암호를 저장하는 다양한 방법과 발생할 수있는 일반적인 함정에 대해 설명합니다. 특히 해싱 알고리즘, 레인보우 테이블 및 "소금"을 사용하여 손상된 암호 파일의 위험을 줄이는 방법에 대해 설명합니다.
varchar
데이터 유형 의 사용은 적절하게 해시 된 암호를 저장하는 데 완벽하게 적합합니다. 예를 들어 다음은 프로덕션 데이터베이스의 실제 계정 레코드의 일부입니다.
=> email = 'greg@hewgill.com'인 계정에서 account_id, email, salt, passhash를 선택합니다. account_id | 이메일 | 소금 | 패스 해시 ------------ + ------------------ + ------------------ + ------------------------------------------ 1 | greg@hewgill.com | GFR9uT4N4Tzl3vnK | 2c2bf00079a6d49a8f7fb17cefb52fdb41a4b043 (1 열)
이 경우 passhash
내 비밀번호와 연결된 솔트의 SHA-1 16 진수 표현입니다.
"chkpass 모듈"설치
이 모듈은 암호화 된 암호를 저장하도록 설계된 데이터 유형 chkpass를 구현합니다. postgresql contrib 패키지를 설치하고 CREATE EXTENSION 명령을 실행하여.
Ubuntu 12.04에서는 다음과 같이됩니다.
sudo apt-get install postgresql-contrib
postgresql 서버를 다시 시작합니다.
sudo /etc/init.d/postgresql restart
사용 가능한 모든 확장 기능은 다음과 같습니다.
/opt/PostgreSQL/9.5/share/postgresql/extension/
이제 CREATE EXTENSION 명령을 실행할 수 있습니다.
예:
CREATE EXTENSION chkpass;
CREATE TABLE accounts (username varchar(100), password chkpass);
INSERT INTO accounts(username, "password") VALUES ('user1', 'pass1');
INSERT INTO accounts(username, "password") VALUES ('user2', 'pass2');
select * from accounts where password='pass2';
보고
username | password
---------------------------
"user2" | ":Sy8pO3795PW/k"
Postgres 버전 9.4 이상은 http://www.meetspaceapp.com/2016/04/12/passwords-postgresql-pgcrypto.html에 설명 된대로 pgcrypto 확장을 사용하여 더 스마트하고 안전한 방법으로이 작업을 수행 할 수 있습니다 .
참고 URL : https://stackoverflow.com/questions/1200326/what-is-the-datatype-for-a-password-in-postgresql
'developer tip' 카테고리의 다른 글
Android에서 sharedUserId는 무엇이며 어떻게 사용됩니까? (0) | 2020.12.09 |
---|---|
IntelliJ에서 한 발 뒤로 물러나는 방법은 무엇입니까? (0) | 2020.12.09 |
WCF : 설정하지 않고 읽기 전용 DataMember 속성을 노출합니까? (0) | 2020.12.09 |
CSS 전환 자동 높이가 작동하지 않음 (0) | 2020.12.08 |
psql을 사용하여 SSL 모드에서 postgresql에 연결 (0) | 2020.12.08 |