私は現在勤務している会社の採用応募書類を作成しています。SQL インジェクションやいくつかの XSS テクニックから保護するために持っています。私の主な問題は、SSN や住所などの機密情報を安全に保つことです。なぜなら、会社はセールスマンの税金用に 1099 フォームを作成する必要があるからです。
この部分を行う方法がわかりませんが、すべてを暗号化してから、MySQL データベースに入ったときに復号化する必要がありますか?
私は現在勤務している会社の採用応募書類を作成しています。SQL インジェクションやいくつかの XSS テクニックから保護するために持っています。私の主な問題は、SSN や住所などの機密情報を安全に保つことです。なぜなら、会社はセールスマンの税金用に 1099 フォームを作成する必要があるからです。
この部分を行う方法がわかりませんが、すべてを暗号化してから、MySQL データベースに入ったときに復号化する必要がありますか?
これは非常に単純化された回答であり、セキュリティに関するほとんどの回答と同様に、一粒の塩で受け取る必要があります。
どこでもSSLを使用します。
安全な暗号化キーを使用する
暗号化されたデータの保存には、BLOB
フィールドを使用し、MySQL の組み込みの暗号化関数を使用できます。例:
update mytable set myfield = AES_ENCRYPT('some value', SHA2('your secure secret key', 512));
アプリケーション コードで暗号化/復号化を行いたい場合は、PHP のMcrypt関数を参照してください。
これは決して完全なガイドではありませんが、開始点であり、何もしないよりはましです。
キーを含む SQL クエリ (Wesley Murchが示唆するように) はお勧めできません。もしあなたがそうするなら:
update mytable set myfield = AES_ENCRYPT('some value', 'your secure secret key');
...そしてクエリがログに記録されます(instのslowlog)。安全な秘密鍵はプレーンテキストでキャプチャされますが、これは決して起こらないはずです。秘密鍵を使用したこのようなクエリは、次のようなクエリを実行すると表示されますSHOW PROCESSLIST
。
次の問題は、安全な鍵をどこに保管するか? PHPファイルで?これもプレーンテキストです。
データの暗号化:
秘密鍵/公開鍵の暗号化を使用します ( http://en.wikipedia.org/wiki/Public-key_cryptography )。PHP はそれを非常によくサポートしています。
詳細については、「ユーザー制御の暗号化」または「ゼロ ナレッジ プライバシー」をググってください。
SQL 挿入/XSS:
最善の保護は安全なアプリです。間違いない。セキュリティを確保したい場合は、for inst PHP IDS を使用して攻撃を検出できます: https://github.com/PHPIDS/PHPIDS
私はそれについてかなり良い経験をしています。
コメントで暗示されているように、あなたは大きな質問をしています。いくつかの個別の問題を調査する必要があります。
1 回の回答ですべてを解決するのは難しいでしょう。上記のトピックについて、このサイトで検索を実行することをお勧めします。