私はsymfonyフレームワークとPropelを使用していますが、私はデータベースを暗号化する最も簡単な方法は何もありませんでした。私はパスワードではなくすべてのデータベースについて話しています。私はいくつかの情報(ユーザーアカウント、パスワードなど)を管理するクライアント用の小さなWebアプリケーションを構築しましたが、誰かがphpmyadminにアクセスできるようにしたい場合には表示します。symfonyのデータベースを暗号化する方法
答えて
これはちょっと単純かもしれませんが、あなたはDBに書き込む前に単純にサーバーの暗号化を行い、読み込み時にそれを解読するのはどうでしょうか?あなたの問題のように、サーバー管理者にを簡単に送信しないようにしているようです。あなたのデータを読んでください。 Symfonyを使用している場合、おそらくコード内でコードを変更する必要はありません。
いくつかの掘り出しの後、私が特に勇敢であると感じたら、どうすればいいでしょうか?
xxx/symfony/vendor/propel/util/BasePeerのbuildParams()を編集します。860のようにあなたが
$params[] = array('column' => $crit->getColumn(), 'table' => $crit->getTable(), 'value' => $crit->getValue());
$params[] = array('column' => $crit->getColumn(), 'table' => $crit->getTable(), 'value' => your_encryption_method($crit->getValue()));
への変更(私が何かを逃した場合を除く)はsymfony/Propelはデータベースへの書き込みすべてが最終的にその関数を呼び出すことになりますので、あなたが書いたすべてを見つけるでしょう上のPHP、 your_encryption_method()で暗号化されます。
これを試してみて、それが動作し、あなたが勇敢な感じまだなら、XXX/symfonyの/ベンダー/推進-ジェネレータ/クラス/推進/エンジン/ビルダー/ OM/PHP5 /中addHydrate()関数を変更symfony propel-build-modelまたはsymfony-propel-build-allを呼び出すと、hydrate()コードのpropelが自動的に生成されるように、PHP5BasicObjectBuilder.php(668行)
それは現在、あなたがこの変更を行った後
case PropelTypes::DATE:
case PropelTypes::TIME:
case PropelTypes::TIMESTAMP:
$script .= "
\$this->$clo = \$rs->get$affix(\$startcol + $n, null);
";
break;
default:
$script .= "
\$this->$clo = \my_decryption_function($rs->get$affix(\$startcol + $n));
";
の線に沿って何かにそれを修正したい
case PropelTypes::DATE:
case PropelTypes::TIME:
case PropelTypes::TIMESTAMP:
$script .= "
\$this->$clo = \$rs->get$affix(\$startcol + $n, null);
";
break;
default:
$script .= "
\$this->$clo = \$rs->get$affix(\$startcol + $n);
";
のように見えるにsymfonyはPropelビルド・モデルを実行して、私をさせてくださいそれがうまくいくかどうかを知る:-)これらのファイルを変更する前にこれらのファイルをバックアップしておいてください。symfonyのコアを変更しているので、他のプロジェクトには問題があります。暗号化されたデータをdb
通常、これはMySQLの組み込み権限で処理します。
誰かがphpMyAdminを使用する唯一の方法は、サーバにインストールして設定している場合です。これは、簡単にアンインストールする方法や、SSL接続と強力なパスワードを使用できない場合に修正するのが最も簡単な方法です。
他に考慮すべきことは、サーバーをロックダウンすることです。まず、MySQLがローカルホストまたはローカルネットワークからの接続のみを受け入れるようにすることができます。
実際の質問に関しては、効果的な方法でデータベース全体を暗号化する方法はわかりません。あなたは確かにデータを暗号化することができますが、サーバに解読コードを置く必要があることを考えると、メリットはありません。誰かがサーバにアクセスしても、データにアクセスすることができます。最善のことは、最初にそのアクセスを防ぐことです。
私は共有ホスト上で動作しますので、phpmyadminとsslをアンインストールすることはできません。私の恐れは、Webホスト企業がデータベースにアクセスして見ることができるということです。コードがサーバー上にある場合でも、暗号化キーは、クライアントが自分のアカウントにログインする際に使用するパスワードと同じ(または別の)パスワードにすることができます。アルゴリズムは知っていますが、暗号化キーは知っていません。 – Daniel
セキュリティがそれほど懸念される場合は、共有ホストにいないようにしてください。 少なくとも、ホストは信頼できるものであり、確実なセキュリティポリシーを備えていることを確認してください。 私はあなたにこの回答をよりよくしていますか? –
これは3つのレベルの質問です。
- 入力/出力データであるため、 を傍受することはできません。
- 管理者権限のため、作業中に間違った人 によってシステムにアクセスすることはできません。
- ハードドライブがあるので、誰かが コンピュータに直接アクセスできる場合、ハードウェアを抽出しても にアクセスすることはできません。
1の場合、SSLとHTTPSを使用できます。
2の場合、パスワード、権限、およびアップデートの設定については、sysadminのベストプラクティスに従ってください(serverfault.comはあなたの友人です)。これにはDB管理者が含まれます。
3の場合は、ハードウェア全体を暗号化する必要があります。 DBの暗号化だけを使用すると、サーバーのパフォーマンスが低下します。暗号化を使用するとシステムは遅くなるが、Webアプリケーションの枯渇の場合はファイルシステムの上のレベルでそれを行う。さらに、暗号化されたハードドライブ上でLinuxシステム全体を実行するためのツールはかなり成熟しています(Ubuntu上では、LVMはこれをほとんど透過的に行います)。
あなたが気づいたように、これはSymfonyとはまったく関係がありません。
- 1. Heroku - データベースを暗号化する方法
- 2. Symfony暗号化パスワード
- 3. データベースの暗号化
- 4. MongoDBデータベース暗号化
- 5. データベースのクレジットカード情報を安全に暗号化する方法
- 6. powershellでデータベースの暗号化を無効にする方法
- 7. イオン性のSQLiteデータベースを暗号化する方法
- 8. テキスト暗号化/復号化方法Java
- 9. データベースのパスワードを暗号化する
- 10. 全文データベースの暗号化
- 11. データベースIdの暗号化
- 12. MonetDBデータベースの暗号化
- 13. データベースにCryptoJS暗号化パスワードを格納する方法
- 14. パスワードの暗号化方法
- 15. IBMイメージ・サービスのテキストを暗号化/復号化する方法
- 16. チャンク内のデータを暗号化/復号化する方法は?
- 17. コアデータのデータを暗号化/復号化する方法は?
- 18. Grailsドメインクラスの列を暗号化/復号化する方法は?
- 19. ルアでデータベースを暗号化する
- 20. SQLiteデータベース暗号化C#?
- 21. app.configを暗号化する方法は?
- 22. iphoneアプリケーションを暗号化する方法
- 23. log4netログファイルを暗号化する方法
- 24. JSONオブジェクトを暗号化する方法
- 25. 暗号化キーを使用してメッセージを暗号化する方法
- 26. iOSでファイルを暗号化/復号化する方法は?
- 27. SAMLアサーションを暗号化および復号化する方法
- 28. Azureストレージアクセスキーを暗号化および復号化する方法
- 29. ユーザパスワードを暗号化する2ウェイ暗号化のハンドル/ストア暗号化キー
- 30. 暗号化されたデータベースにdacpacを展開このデータベースの暗号化を無効にする
weeeeel ....はい、それは私の質問でした。 symfonyでこれを行う最も簡単な方法は何ですか? symfonyを使ってデータベースに情報を埋め込む方法: – Daniel
Symfonyのバージョンは何ですか? – sjobe
私はSymfony 1.0.20にいる – Daniel