2016-12-28 1 views
0

사용자가 전자 메일 주소로 등록 할 수있는 레일즈 응용 프로그램에 루비가 있습니다. 이들은 실제 전문가의 전자 메일 주소가 될 것이며 개인 정보 보호를 이유로 볼 수 없습니다. 이 이메일 주소를 볼 방법이 없다고 가정 해 봅시다. 데이터베이스에postgresql : 수퍼 유저가 데이터베이스의 전자 메일 열을 볼 수 없도록 차단합니다.

SELECT * FROM users; 

: 나는 같은 선택 쿼리를 사용하면

나는 이러한 이메일을 숨길 수있는 방법이 필요합니다. '사용자'는 전자 메일 열을 포함하는 테이블입니다. 이 쿼리를 사용하면 문제가되는 모든 사용자의 모든 전자 메일 주소를 볼 수 있습니다. 나는 더미 이메일에 실제 이메일을 설정합니다 psql의 데이터베이스를 입력하면

update users set email = 'testmail+user' 

: 내가 사용하려고

1) : 여기

나의 시도 솔루션입니다. 문제는이 라인을 타이핑 할 때마다 매번 전자 메일을 거짓 이메일로 만들고 싶습니다.이 라인을 타이핑하지 않으면 실제 이메일을 검색 할 수 있습니다.

2) 데이터 익명화 젬 (https://github.com/sunitparekh/data-anonymization)을 사용해 보았습니다. 그러나 이것은 루비 스크립트에 의존하며 사용자가 가입 할 때마다이 스크립트를 어떻게 실행해야하는지 잘 모르겠습니다.

3) 선택한 열의 내용을 익명으로 처리하는 tidus gem (https://github.com/Barzahlen/tidus)의 지침을 따랐지만 psql 데이터베이스에 들어가면 전자 메일이 변경되지 않고 선택한 쿼리가 만들어졌습니다.

4) 수퍼 유저가 아니고 SELECT 권한을 거부하는 다른 사용자를 만들려고 시도했지만 사용자의 다른 열에 액세스 할 수 없습니다.

요약하면 전자 메일이 가입 한 사용자가 입력 한 직후 익명으로 처리하거나 이러한 개인 전자 메일 주소를 볼 수 없도록하는 방법이 필요합니다.

다른 열 (예 : 이름, 성)을 계속 볼 수 있습니다.

+1

이것은 숙제가 의심 스럽습니다. 데이터베이스 수퍼 유저라는 전체 아이디어는 데이터베이스의 모든 것을 볼 수 있다는 것입니다. 누군가가 전자 메일 주소를 읽지 못하도록하려면 bcrypt, scrypt 또는 PBKDF2와 같은 암호 파생 기능을 사용하여 암호를 해시해야합니다. 그러나 해시 된 후에는 사용자가 올바른 이메일 주소를 입력했는지 확인할 수 있습니다. 삽입하기 전에 데이터를 암호화 할 수도 있습니다. 그러나 사용자는 레코드 암호를 해독하기 위해 암호를 입력해야합니다. – Doug

답변

1

간단하면 수퍼 유저가 아닌 컴퓨터에서 값을 암호화하십시오.

제한된 액세스 권한이있는 응용 프로그램 서버 또는 사용자의 컴퓨터에서이를 의미합니다.

당신은/자신의 실제 값을 사용보고 싶지 않을 경우 당신은 왜 이메일 주소를 기록하는 그것을

을 할 수있는 다른 방법이 없다?

관련 문제