2016-12-28 8 views
0

私は、ユーザが電子メールアドレスでサインアップすることができるRuby on Railsアプリケーションを持っています。これらは実際の専門家の電子メールアドレスであり、私はプライバシーの理由からそれらを見ることができません。これらのメールアドレスを表示する方法がないとしましょう。データベース上のpostgresql:スーパーユーザがデータベースの電子メール列を表示しないようにします。

SELECT * FROM users; 

:私のような選択クエリを使用した後

私は、これらの電子メールを非表示にする方法が必要です。 '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

シンプルで、スーパーユーザーではないコンピュータで値を暗号化します。

これは、アクセスが制限されているアプリケーションサーバー、またはユーザーのコンピュータ自体で発生します。

あなたが見る/彼らの真の価値を使いたくない場合は、電子メールアドレスを記録しているなぜそれを

を行うには、他の方法はありませんか?