2011-01-03 8 views
0

最終的にバックエンドデータベース(MySQLの場合があります)に保存されるコンテンツを入力するWebサイトを作成したいとします。しかし、コンテンツがクライアント側に残る前に、私はそれが多分JavaScriptのようなクライアント上のものを使って暗号化されたものにしたい。暗号化されたデータベースを使用してウェブサイトを作成する方法の提案が必要

データはWeb上で暗号化されますが、重要なことに、暗号化されたバックエンドデータベースにも永久に保存されます。

これにはJavaScriptを適していますか? 256ビットの暗号化には時間がかかりますか?

また、過去2か月間にユーザーが投稿した可能性のあるコンテンツをプルダウンするには、後で暗号化されたデータベースをどのようにクエリしますか?

私はヒント、提案、およびこれについて学習してこれを達成する方法について皆さんが持っている可能性のあるポインタを探しています。

ありがとうございます!

+0

JavascriptはMYSQLと通信できません。 PHPのような言語を使用する必要があります。 –

+0

見てくださいhttp://stackoverflow.com/questions/4481944/how-to-encrypt-my-data-on-the-server-side-using-django –

答えて

0

クライアント側で暗号化されていると、暗号化スキームのソースコードがjavascriptのように簡単に復号化される可能性があります。たくさんの暗号化方式、AES、Blowfishな​​どがありますが、データが暗号化された接続上を移動している場合は、データの暗号化にはセキュリティがほとんどなく、パケットスニファがローカルにインストールされているか、

私はまた、圧縮を使って調べることをお勧めします。私自身LZMA、Huffman、さらにはbase64エンコーディングをjavascriptで使用して、少なくともカジュアルオブザーバーのコンテンツを隠すために使用しました。暗号化がどのように優れていても、クライアントにプロセスを渡しているだけで、暗号化方式を知っていて怠け者ではないので、ソースを見て簡単に暗号化を元に戻すことができますウィキペディアでグーグルや検索を少し行います。私は個人的には、送信されるデータのサイズを減らすため、圧縮を好みます。暗号化と圧縮の分析で訓練されていない限り、パケットを盗聴するのに使用されている圧縮を把握するのは容易ではありません。

EDIT:しかし、高度なセキュリティが必要な場合は、圧縮を使用せず、サーバーとクライアント間を移動するデータにRSAやDiffie-Hellman暗号化などの非対称暗号化方式をプライベートとして使用することをお勧めしますキーは決して共有されません。

クライアント側では、javascript以上のJavaアプリケーションが動作します(少なくとも2秒で右クリック - > Javaアプリケーションでソースを表示できません)。あなたが言ったようにいくつかの文章を保存したいのであれば、256ビットの暗号化には時間がかかりません。ミリ秒単位で爆発する最新のプロセッサー。その後、サーバーに到着したら、AESまたは他の強力なアルゴリズムを使用して暗号化します(米国政府はデータベースに送信する前に、AES 256をTop Secretドキュメントに使用します)。 (また、ハッシュを格納することもできます(MD5はPHPですぐに利用できる関数ですが、Wh​​irlpoolのようなものを選ぶこともできますが、ライブラリはそれを見つける必要があります)。データベースに侵入していないことを確認するためにアクセスしたときにチェックしてください)

質問するには、PHPをお勧めします。データを読み取って解読し、クライアントに(暗号化された形式で)送信するか、必要に応じてクライアントに解読させ、データが送信されているネットワークを信頼しない場合。

ここではJavascriptとAESの良い情報源です:JavaScriptでRSAを使用してhttp://point-at-infinity.org/jsaes/ 私の2保存されたリンク:http://www.farfarfar.com/scripts/encrypt/http://www.ohdave.com/rsa/http://www.hanewin.net/encrypt/rsa/rsa.htm

+0

暗黙のセキュリティは悪いセキュリティです。優れた暗号では、キーが移動していない場合でも、コードを見ているオブザーバーに問題はありません。 –

+0

はい、本当ですが、私は質問者が要求するセキュリティについては不明です。彼らが完全なセキュリティを望むならば、私はただの圧縮に反対し、強力な暗号化方法(クライアント側の暗号化と復号化を必要とし、サーバに鍵を保存/送信しない)を選択します。圧縮が必要な場合は、圧縮されたデータ転送の利点が得られます。 – LostInTheCode

0

ルック(暗号化/復号化)。

試行text/text/XXTEAが成功しました。

しかし、それはあなたがJS暗号化に行くことができる程度です。

は、限り、あなたはSSL/HTTPSを使用していないとして、主な欠点は、次のとおりです。

  • 秘密鍵を保護するために、ファズ、(それは、提出されていない、フォームフィールドのような、しかし行うことができます各セッションで値を入力する必要があります)。

暗号化されたデータの検索/抽出については、何も動作しないと考えています。

0

ネットワークを介して送信されるデータは暗号化されていますが、これはHTTPSが作成されたものです。何も明らかに伝達されません。ほとんどの銀行が信用できるほど暗号化されています。ここで車輪を再構築しないでください。それは生き物のために車輪を作っている人々の束が思い付くほどに丸くなることはありません。

http://ではなくhttps:// urlにフォームを送信し、そのURLにあるスクリプト/アプリはデータベースと通信し、必要に応じてデータを暗号化して解読します。とにかくJavascriptは直接MySQLと直接対話しません。また、すべての暗号化クライアント側を実行すると、ページを取得できる人は誰でも暗号化を解除できます(必要に応じてクライアントに復号化キーを与える必要があるため)。

1

クライアントとサーバー間の通信には暗号化を実装しないでください。SSL(https)を使用してください。データベース内のデータを暗号化する場合は、AES_ENCRYPTやAES_DECRYPTなどのMySQLの組み込みメソッドをいつでも使用できます(詳細はreference manualを参照)。

0

は、このブログ投稿をチェックアウト:http://www.ravellosystems.com/blog/all-you-need-to-know-to-configure-ssl-offloading/

それはあなたが(SSLターミネーションa.k.a)暗号化されたチャネルの下にコンテンツを提供するために、あなたのウェブサーバを構成するために必要なすべての手順を説明します。

+1

今後リンクが利用できなくなる場合のために、リンクの内容を要約してください。 – jszumski

関連する問題