[[セキュリティ指針]]
URLに秘密にしておくべき情報を入れない
説明
URLは、通信上、比較的ログに残りやすい情報である。また、SSLを使用し暗号化通信を行ったとしても、URLに表示されている文字列は暗号化されない。
ログとはWebサーバのログ、プロクシサーバのログ、リファラ情報などのことである。
被害例
- その1
<FORM action="login.php" method="get">
ユーザ名:<INPUT name="username" type="text">
パスワード:<INPUT type="password" name="password">
<INPUT type="submit" name="ログイン">
</FORM>
上記のようなGET情報で、ログインするようなページが存在したとする。
このページを利用してブラウザ上に表示されるURLは次の通りである。
http://exsample.com/login.php?username=zend&password=userpassword
上記URLでページにアクセスしたことは、ProxyやWebサーバ、またはこの後、知らない人のページに移動した場合、ブラウザによっては、リファラ情報を他のサーバに保存することになる。
その場合、ユーザ名やパスワードが外部へ漏洩することとなる。
対策
- その1
機密情報は、POSTメソッドもしくはCookieでやり取りする。
POSTやCookieであれば、機密情報はログには残りにくい。*1
またSSLで暗号化を行えば、パケットスニファリングなどでも情報は取れなくなる。
- その2
Cookie及び、Post以外の、セッションの受け渡しは許可しない。
PHP上では次の項目の設定を行うことにより透過的なセッションを無効とする。
session.use_trans_sid=0