2009-02-26 11 views
1

flash-based uploaderを実装しているうちに、Flash doesn't provide the correct cookiesという問題が発生しました。 PHPセッションIDがPOST変数を介して渡される必要があります。POSTはクッキーほど安全ですか?

POST PHPSESSIDを確認する機能的なソリューションを試して実装しました。

セッションIDをクッキーで送信するのと同じ安全な状態でPOSTしていますか?

考えられる理由:両方がhttpヘッダーにあり、クライアントが偽造することも同様に可能です。 考えられる理由:POST変数をCookieよりも偽造する方が簡単だからです。

答えて

5

POSTはクッキーと同じくらい簡単に安全です。これらは両方とも、cURLにフラグを設定するだけで実行されます。

言われているように、私はあなたにも良い解決策があると思います。

2

アクティブなコンテンツからPOSTするためにセッションIDを取得できる場合は、セッションクッキーにHttpOnlyと表示されていない可能性があります。ホストクレームの1つはa good idea for defending against cross-site scripting attacksです。

代わりに、JavaScriptベースの、またはリフレッシュベースのアップローダモニタを検討してください。これは、CookieがHttpOnlyになることができる他のすべてと十分に統合する必要があります。

一方、サイトがサードパーティのコンテンツを受け入れない場合、クロスサイトスクリプティング攻撃は問題にならない場合があります。その場合、POSTは正常です。

2

私はHTTPリクエスト(カールまたはフラッシュを使用)で何かを偽造しているので、GET経由で送信するとうまくいくと思います。 重要なことは、あなたのcookie/post/getパラメータで暗号化されているものと、それがどのように暗号化され、サーバー側でチェックされているかです。

0

POSTデータはHTTPヘッダーではありませんが、HTTPヘッダーと同じように読みやすく、偽造されやすいTCPストリームの一部として送信されます。あなたはHTTPリクエストを傍受した場合、それは次のようになります。

POST /path/to/script HTTP/1.1 
Host: yourdomain.com 
User-Agent: Mozilla/99.9 (blahblahblah) 
Cookie: __utma=whateverthisisacookievalue;phpsessid=somePHPsessionID 

data=thisisthepostdata&otherdata=moredummydata&etc=blah 

他の人が言ってきたように、彼らはすべてちょうどですので、だから、POST、およびクッキー(およびGETデータ、すなわちクエリ文字列)は、すべて偽装するのは簡単です同じHTTPパケット内のテキスト。

+0

content-lengthは、無限の待機またはバッファオーバーフローが発生しないように、要求に予想されるデータの量をサーバーに伝えることに注意することが重要です。 –

1

本当にどちらが偽造しやすいのか心配している場合は、間違ったことを心配しています。簡単に言えば、どちらかが経験豊富な攻撃者にとっては些細なことです。あなたはもう一方を選択することによって "スクリプトの児童"を守るかもしれませんが、それらの人々はあなたが心配する必要がある人ではありません。あなたが尋ねるべき質問は、「あなたが誰かを鍛造することに対して防御はありますか?」ということです。それは起こるでしょう。あなたのIDが暗号化されておらず、簡単に推測できれば、それは問題です。それはハッキングされます。あなたがより安全なものを求めているので、私はあなたが懸念していると言います。

コンパイルされたコードが攻撃者のマシン上にあるため、アプリケーションがフラッシュであるため、変更することができます(javascript HTMLコードと同じように)。彼らはバイナリを見て、コードがどのように動作するのか、それがサーバから取得する必要があるのか​​を理解することができます。

0

CookieとPostの両方が同じように安全でないことを繰り返し述べたいだけです。

+0

クッキーを使用すると、転送する前にSSLを要求することができ、HttpOnlyを指定することができます。つまり、私はクッキーがPOSTよりも潜在的な利点を持つと考えています。 –

関連する問題