質問する前に、この方法は非常に推奨されておらず、安全ではないことを認めます。これを達成するにはSSLを使用する必要があることを認識しています。
ただし、私は HTML5 アプリを開発しており (SSL アプローチの実装には多くの時間がかかるようです)、フォーム コンテンツを POST する最良の方法を知りたいです。
つまり、私は次のフォームを持っています
<form id="someform" name="someform" method="POST" action="some/server/url">
このフォームが送信される方法 (現在) は、ajax $("#someform).serialize() などを使用しています..
この実装を使用すると、(少なくとも) 次の 2 つの差し迫った問題に直面しています。
- ユーザーはツール (つまり、TamperData | firefox アドオン) を使用して、投稿されたコンテンツを変更できます (傍受して変更)。
- ユーザーは「偽の」送信を送信することでデータを偽造できます (偽造)
少なくとも(POST-edを難読化する)値を何とかできるかどうか疑問に思っています。
このすばらしいhttp://www.jcryption.org/ツールに出会いましたが、直面している問題を回避するためにどのように実装すればよいかわかりません。
ps: 繰り返しますが、クライアント側のスクリプトに依存することは、サーバー側からすべての実行を処理することに比べて安全性が低いことを認識しています。
私が使用しているフレームワーク + 言語は: CodeIgniter + PHP + JavaScript (jquery)
第 1 修正:
この理論を使用して少なくとも回避策があると確信しています
まず、データの機密性についてはあまり心配していません。つまり、他の誰かがそれが何であるかを知っていたとしても、POST された値は価値のある情報を提供しません。
しかし、私が懸念しているのは、POST された値の完全性と信頼性です。これは単に、情報が送信された後 (送信ボタンがクリックされた後) に情報を改ざんしたり、偽の値を偽造したり作成したり (サーバーのなりすまし) できないことを意味します。
この理論はデジタル署名につながります。(理論的には) サーバーの PUB キーを使用して POST された値に署名し、サーバーの PUB キーを使用して POST された値をハッシュし、最終的に元の POST された値の両方を送信する必要があります。値とハッシュ値。
POST された値を送信する前に、クライアントはサーバーの PUB キーを要求する必要があるため、クライアントは POST された値をハッシュできます。サーバーはおそらく、SESSION 情報とともに PUB キー情報を格納できます。
次に、サーバーは、元の POST 処理された値 (クライアントから送信された) を (再度) ハッシュ (今回はサーバーの PRI キーを使用) し、ハッシュされた 2 つの値を比較する必要があります。これらの値が同じであれば、それは単に本物であることを意味します。
今、私がまだ理解していない部分はHOWです.....
これを行う方法に関するツール/フレームワーク/プラグイン/チュートリアル/例はありますか? Public-Key-Infrastructure 全体をゼロから開発するには (限られた時間は言うまでもなく) 私には多すぎるからです。