重要情報は POST で送信する

HTTP メソッドには、GET と POST がありますが、どのように使い分ければよいでしょうか?

GET メソッドは Web サーバーのリソースを取得するもので、Web サーバーのリソースの変更などを伴わない場合に使用します。パラメーターは URL の後ろに追加され、長さにも制限があります。

一方、POST メソッドは Web サーバーのリソースを変更する場合に使用します。パラメーターはリクエストボディに書き込まれるため、URL にパラメーターは表示されません。また、基本的に長さの制限もありません。

GET メソッドは URL にパラメーターが表示されるので、アクセスログに情報が残ってしまいます。

以下は実際の Web サーバー(Apache)のアクセスログですが、GET メソッドのためパラメーターがアクセスログに残ってしまっていることが分かります。

192.168.11.2 – – [24/Feb/2013:07:16:48 +0900] “GET /hello.php?id=yamada&password=password HTTP/1.1″ 200 105 “http://192.168.11.9/login.php” “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17”

一方、同じプログラムを POST メソッドにした場合のアクセスログは以下のようになります。POST メソッドのためパラメーターがアクセスログに残らないことが分かります。

192.168.11.2 – – [24/Feb/2013:07:50:41 +0900] “POST /hello.php HTTP/1.1″ 200 60 “http://192.168.11.9/login.php” “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17”

対象 Web サーバーのアクセスログに情報が残ってしまうと、その情報が個人情報やログイン情報だった場合、重要情報としてアクセスログを管理する必要が出てきてしまいます。アクセスログが漏洩したら、重要情報の漏洩になってしまうためです。

ですので、重要情報を送信する場合は、最初から問題が起こらないように POST メソッドを使用するようにしましょう。

  • 重要情報は POST で送信する

参考

Webアプリケーションセキュリティに関する記事は、以下のページにまとまっています。ぜひご確認ください。

コメント

タイトルとURLをコピーしました