[Tep-j-general] Re: セッションハイジャック対策

Back to archive index

hamada bungu****@leo*****
2004年 4月 27日 (火) 09:52:12 JST


こんにちわ。

On Mon, 26 Apr 2004 10:21:41 +0900
TAMURA Toshihiko <tamur****@bitsc*****> wrote:

> osCommerce において、BBSや検索サイトの検索結果から`osCsid=...'と
> いったセッションID付きURLでサイトを訪れる場合がある。
> 現在、この現象を確認している検索エンジンには MSN がある。

つまり、MSNで使ってるクローラーはosCommerceのリンクを追うんですね〜。

現在のMSNはたしかロボットにInktomiを使ってたハズなんで、

> Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)

↑このロボットが拾ったリンクだってことなんだと思うんですけど、当方のログ
からこのエージェントのログを検索してみましたところ、

> /catalog/product_info.php/cPath/28_55/products_id/356

全部↑こんな感じで、セッションIDの付いたアクセスは1つもありませんでした。

これはたぶん、当方のosCommerceはクローラーに対してmklist/mklist2で作った
サイトマップを用意してる→クローラーがこちらからリンクを追ってきてるせい
なんだろうと思います。

未だβ版扱いであるMSNbotも結構頻繁にクロールしてきてるようですが、やはり
同様に「セッションIDの付いてない」クリーンなURLでリクエストを送ってきて
るみたいです。Googlebot他も同様。

当方の知ってる範囲では、Naverのロボット

> NaverBot-1.0 (NHN Corp. / +82-2-3011-1954 / nhnbo****@naver*****)

がセッションを追って来ます。

というか、NaverBotはセッションを識別出来ないようで、同一のファイルに対し
てセッションIDだけ変えて短時間にしつこく繰り返しリクエストを送り続けて来
る→サーバに無駄な大負荷をかけてくる困ったちゃんで…(^_^;)

> 対策としては、session.referer_check の設定を利用するのが
> 簡単で効果があります。

ということで、当方のサイトでは↑こちらの対策くらいでいいだろうと思って作
業を始めたのですが…

一体「session.referer_check」にどんな文字列を設定すればいいんでしょう??

> session.referer_check には、HTTP Referer において確認を行う文字列を指定
> します。Refererがクライアントにより送信されており、かつ、指定した文字列
> が見付からない場合、埋め込まれたセッションIDは無効となります。デフォル
> トは空の文字列です。 

これが「指定した文字列がある場合」だったら検索エンジンのURLの一部とか設
定すればいいのかなぁとか思うんですけど、「見つからない場合」ということな
ので、当方にはどんな文字列を設定すればいいのか見当がつきません。

> http://www.oscommerce.com/community/contributions,1089
> ロボットのアクセス時にセッションIDを付加しない。

やっぱりこっちを考えるヒトも居るんですねぇ。このアイディアは当方も最初期
に検討したんですが、プログラミング技術が伴わなかったことに加え

「人間のときとクローラーのときで違う処理をする→検索エンジンスパム(クロー
キング)と見なされそうで、ちょっと怖い」

という部分がありまして、見送ったと言う経緯があったりします。

実際には、アマゾン等で

「クローラーが来た場合にクリーンなURLへリダイレクトする」

ことが当たり前に行なわれてますんで、「余計なものを除いたクリーンなURLに
誘導すること」はクローキングではなかったみたいですけど。

それにしても、このspiderkillerは非常に素朴なテクニックで必要事項を実現し
てますね。当方程度のスキルでも、このソースなら苦労せずに読むことができま
した。確かにこれは重いかも(笑)

はまだ






Tep-j-general メーリングリストの案内
Back to archive index