2011-12-29 10 views
1

私は次のようなシナリオがあります:AndroidクライアントはHTTP Post経由でPHPサーバと通信します。 PHPサーバはmySQLデータベースと通信し、出力をJSONとしてAndroidクライアントに送信します。 これは既に質問しています:securing connection to php serverSSLなしでPHPサーバへの接続を保護する

結論TLS/SSLを使用して接続を保護することができます。不幸にも私のサーバはtlsをサポートしていません。

私のPHPサーバのAPIを入手するのが少し難しくなるような方法があります。そのため、私のサーバにPC経由で投稿することはできません。

誰かがwiresharkのでトラフィックを傍受した場合、彼は簡単に私のPHPサーバーへの通信がどのように行われるかを取得べきではありませんので、

...私はGZIPについて考えたが、私はそれは、低障壁となります。

+1

私は以前と同じ問題があると思います。ユーザーからの秘密を保持する。ユーザーがサイトでアカウントを作成するように強制し、システムをそのように制御しようとしましたか? –

+0

いいえ、私はユーザーにアカウントを持ってほしくない。 – tobias

+0

あなたのWeb APIの仕組みを誰かが見ているのをなぜ気にしますか?公開されている場合は、秘密にするべきではありません。個人識別情報やその他の機密情報を保管している場合は、認証された接続や許可された接続へのアクセスを制限することなく、匿名ユーザーがアクセスできるようにするWebサービスを実行しないでください。あなたの公開暗号化キー/マジックナンバー/ハッシュアルゴリズムを最初に抽出する)誰もあなたに感謝します。ユーザーがデータを気にしていれば、何らかの形式の承認を気にする必要はありません。 – Cheekysoft

答えて

3

サーバーに送信しているすべてのデータのハッシュを作成し、そのハッシュをサーバーに送信すると、サーバーは同じハッシュを計算し、送信されたハッシュに対してチェックできます。ハッシュがどのように計算されるか把握しない限り、誰も自分のデータを送信できませんでした。

+0

あなたはこれを実現するヒントを教えてください – tobias

+0

は、サーバーが既にユーザーが送信しているデータを持っている必要はありませんか?ハッシュは文字列を短い一意の文字列に変換するのに最適ですが、元のテキストに戻すために多くの順列(年齢を取るだけでなく)もあります。少なくとも、ハッシングに関する私の経験です。 – topherg

+0

@cgoddardもし私がポスト変数x = 12、y = abc、z = xyzを送っていたら、そのハッシュ= md5(12abcxyz)と一緒に送ることができます。サーバは変数x、y、z、hashを取得し、同じ方法で同じハッシュを計算し(アルファベット順にx、y、zの値を連結する)、その結果をハッシュ変数と比較することができますまた送られた。一致する場合は応答し、一致しない場合は応答します。実際の解決策は、もちろん塩ではより複雑になる可能性があります。 – dqhendricks

1

あなたはob_start、​​とob_end_cleanは、あなたが出力されているすべてのデータをキャッチするために使用することができ、その後、おそらくあなた自身の時間ベースの機能によって派生秘密鍵を使用して(データを保護するために、いくつかの暗号化アルゴリズムを使用して、プログラムを実行しています

セキュリティのレベルは、使用した手法によって異なりますが、複雑すぎるものを使用するとパフォーマンスが低下する可能性があります。誰かがクラックするのは非常に難しいですが、それはあなたのシステムを破壊しようとしているかどうかによって決まります。

あなたがもっと洗練されたものにしたいなら、Mentalisを探してください。彼らはSSLサーバーのオープンソースのC#実装を作成しました。インスピレーションが必要な場合は、その一部を使用できます。

+1

あなた自身のアルゴリズムを作るならば、他人が壊れるのはとても簡単です。あなたが暗号の天才でない限り。 –

+0

真実、それはいつもあります。しかし、あなたのためにすべてを行うことができるPHPに組み込まれた暗号化関数がたくさんありますが、実際にはssl – topherg

+0

と同様のメソッドを使用してください。一方、複雑で複雑な一方向関数を使用すると、クラック、 – topherg

関連する問題