| « 解答:まちがった自動ログイン処理 | PHP 5.1.3の地味なパフォーマンスチューニング » |
問題:間違った自動ログイン処理
問題:以下のコードはセキュリティ上大きな問題となる脆弱な処理が含まれています。セキュリティ上のベストプラクティス、他の自動ログインの実装方法と比較し、以下のコードの脆弱性を詳しく述べよ。
if (serendipity_authenticate_author(
$serendipity['POST']['user'],
$serendipity['POST']['pass'], false, $use_external)) {
if (empty($serendipity['POST']['auto'])) {
serendipity_deleteCookie('author_information');
return false;
} else {
$package = serialize(
array('username' =>
$serendipity['POST']['user'],
'password' =>
$serendipity['POST']['pass']));
serendipity_setCookie('author_information',
base64_encode($package));
return true;
}
// Now try login via COOKIE data
}
解答:次のブログエントリで解説します。(解説の必要は無いかもしれませんが)
備考:実際のブログアプリケーションのコードの一部です。このブログ(b2evolution)のログインコードも問題がありますが上記コードよりはましです。
追記:serendipity_setCookieがどのように定義されているかが分からないと正確に答えられないので張り付けます。このブログアプリケーションの開発元には適切な自動ログインの実装方法と共にレポートする予定です。
/**
* Set a Cookie via HTTP calls, and update $_COOKIE plus $serendipity['COOKIE'] array.
*
* @access public
* @param string The name of the cookie variable
* @param string The contents of the cookie variable
* @return null
*/
function serendipity_setCookie($name,$value) {
global $serendipity;
setcookie("serendipity[$name]", $value,
time()+60*60*24*30,
$serendipity['serendipityHTTPPath']);
$_COOKIE[$name] = $value;
$serendipity['COOKIE'][$name] = $value;
}
3 comments
Comment from: MS-K [Visitor] · http://ms-k.serveblog.net/
はじめまして。
私の環境にドカンとヒットしましたが、所詮自分程度のレベルでは自己対処は難しいです(-_-;)
次のエントリに期待しておりますので、ぜひとも解答お願いいたします。
私の環境にドカンとヒットしましたが、所詮自分程度のレベルでは自己対処は難しいです(-_-;)
次のエントリに期待しておりますので、ぜひとも解答お願いいたします。
2006/05/10 @ 16:18
このBlog(Serendipity)使われている方は自動ログインをオフにすることによりリスクを回避できます。
問題はメールしておいたので1.0がリリースされるまでには修正されると思います。
問題はメールしておいたので1.0がリリースされるまでには修正されると思います。
2006/05/14 @ 15:39
一応セキュリティコンタクトのメールアドレスにメールして返事が来ました。
「非常に良いとは思うけど、リスクの低減はそれほどではないかも?」言った内容でした。実装方法の説明と現状コードのリスク解説を添えて返信したので、「パッチがあればよいのだけど」とありましたがどなたかがパッチを作成されると思います。
「非常に良いとは思うけど、リスクの低減はそれほどではないかも?」言った内容でした。実装方法の説明と現状コードのリスク解説を添えて返信したので、「パッチがあればよいのだけど」とありましたがどなたかがパッチを作成されると思います。
2006/05/15 @ 16:27