15

私は現在勤務している会社の採用応募書類を作成しています。SQL インジェクションやいくつかの XSS テクニックから保護するために持っています。私の主な問題は、SSN や住所などの機密情報を安全に保つことです。なぜなら、会社はセールスマンの税金用に 1099 フォームを作成する必要があるからです。

この部分を行う方法がわかりませんが、すべてを暗号化してから、MySQL データベースに入ったときに復号化する必要がありますか?

4

3 に答える 3

15

これは非常に単純化された回答であり、セキュリティに関するほとんどの回答と同様に、一粒の塩で受け取る必要があります。

  • どこでもSSLを使用します。

  • 安全な暗号化キーを使用する

暗号化されたデータの保存には、BLOBフィールドを使用し、MySQL の組み込みの暗号化関数を使用できます。例:

update mytable set myfield = AES_ENCRYPT('some value', SHA2('your secure secret key', 512));

アプリケーション コードで暗号化/復号化を行いたい場合は、PHP のMcrypt関数を参照してください。

  • ユーザー入力を暗号化する
  • データベースに保存
  • 取得後に復号化する

これは決して完全なガイドではありませんが、開始点であり、何もしないよりはましです。

詳細については、https://security.stackexchange.com/を参照してください。

于 2013-02-25T04:09:44.923 に答える
15

キーを含む 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 はそれを非常によくサポートしています。

  • 公開鍵は、ユーザーとともに DB に格納できます。これは公開されています。
  • 秘密鍵はユーザーのパスワードで暗号化できます。ユーザーがログインすると、秘密鍵を復号化し、それを自分の Cookie (SSL を使用する場合、それほど悪い場所ではありません) またはセッションに保存します。どちらも完璧ではありませんが、php ファイルのプレーン テキストよりは優れています。
  • 暗号化には公開鍵、復号化には秘密鍵を使用します。
  • ユーザーのみが自分のデータにアクセスできます。

詳細については、「ユーザー制御の暗号化」または「ゼロ ナレッジ プライバシー」をググってください。

SQL 挿入/XSS:

最善の保護は安全なアプリです。間違いない。セキュリティを確保したい場合は、for inst PHP IDS を使用して攻撃を検出できます: https://github.com/PHPIDS/PHPIDS

私はそれについてかなり良い経験をしています。

于 2014-12-19T14:46:03.770 に答える
1

コメントで暗示されているように、あなたは大きな質問をしています。いくつかの個別の問題を調査する必要があります。

  • SQL インジェクションとその防止方法
  • XSS とそれを防ぐ方法
  • SSL を使用して送信されたフォーム データを暗号化する
  • 機密情報をデータベースに保存するためのベスト プラクティス

1 回の回答ですべてを解決するのは難しいでしょう。上記のトピックについて、このサイトで検索を実行することをお勧めします。

于 2013-02-25T04:08:41.470 に答える