私は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. データベースの暗号化
- 3. MongoDBデータベース暗号化
- 4. データベースのクレジットカード情報を安全に暗号化する方法
- 5. イオン性のSQLiteデータベースを暗号化する方法
- 6. テキスト暗号化/復号化方法Java
- 7. パスワードの暗号化方法
- 8. 全文データベースの暗号化
- 9. データベースのパスワードを暗号化する
- 10. Grailsドメインクラスの列を暗号化/復号化する方法は?
- 11. チャンク内のデータを暗号化/復号化する方法は?
- 12. コアデータのデータを暗号化/復号化する方法は?
- 13. log4netログファイルを暗号化する方法
- 14. iphoneアプリケーションを暗号化する方法
- 15. app.configを暗号化する方法は?
- 16. JSONオブジェクトを暗号化する方法
- 17. iPhoneで暗号化されたsqliteデータベースを扱う方法は?
- 18. 暗号化されたデータベースにdacpacを展開このデータベースの暗号化を無効にする
- 19. データベースを暗号化します
- 20. StAXでxmlの暗号化/復号化を行う方法は?
- 21. 暗号化方式
- 22. 良い暗号化/暗号化の本
- 23. DBFlowを使用して、既存のデータベースを暗号化する方法は?
- 24. データベースとユーザー入力の暗号化されたパスワードと暗号化の比較
- 25. PHPを使用してmysqlデータベースのデータを暗号化および復号化する方法は?
- 26. Cxor暗号化の代替方法
- 27. SQL Server CEデータベースの暗号化
- 28. データベースのカラムの暗号化のpostgres pgcryptoのアドオンを使用してPostgresデータベースの列を暗号化する方法
- 29. .NET4でSQLiteデータベースを暗号化/復号化できません
- 30. Adobe AIR 2.0を使用してデータベースSQLiteを暗号化する方法
weeeeel ....はい、それは私の質問でした。 symfonyでこれを行う最も簡単な方法は何ですか? symfonyを使ってデータベースに情報を埋め込む方法: – Daniel
Symfonyのバージョンは何ですか? – sjobe
私はSymfony 1.0.20にいる – Daniel