の形で呼ぶ。
//
// anchor_idはフレームを使う場合最低限各フレームごとに設定。お互い他のフレームを書換えたときにへんな干渉をさけるため。
// その他ページの種別毎などで変えてもよいが、あまり小分けにするとcookieが増える。
// 同じanchor_idで保存されるcookieは1セットのみ。でも単独ページ表示のサイトなら概ねこれで充分。
anchor_id = "anc_main";
noanchor = false; // bodyにanchorをしかけたときなど場合によって一時無効にするためのフラグ。
// アンカーの記憶。
function anchor_save(object_id, page_id) {
if(noanchor) { anchor_erase(); return; }
get_scroll();
setcookie(anchor_id+"_pid", page_id, 0);
setcookie(anchor_id+"_st", scroll_top, 0);
setcookie(anchor_id+"_sl", scroll_left, 0);
if(object_id) {
object_top = scroll_top + get_object_top(object_id);
object_left = scroll_left + get_object_left(object_id);
setcookie(anchor_id+"_oid", object_id, 0);
setcookie(anchor_id+"_ot", object_top, 0);
setcookie(anchor_id+"_ol", object_left, 0);
} else {
setcookie(anchor_id+"_oid", "", -1);
setcookie(anchor_id+"_ot", "", -1);
setcookie(anchor_id+"_ol", "", -1);
}
}
// アンカーの適用。
function anchor_apply(page_id) {
if((saved_page_id = getcookie(anchor_id+"_pid")) && page_id != saved_page_id) { return; }
get_scroll();
if((anchor_st = getcookie(anchor_id+"_st")) != "" && (anchor_sl = getcookie(anchor_id+"_sl")) != "") {
anchor_st = parseInt(anchor_st);
anchor_sl = parseInt(anchor_sl);
} else {
anchor_st = scroll_top;
anchor_sl = scroll_left;
}
if((object_id = getcookie(anchor_id+"_oid"))
&& (anchor_ot = getcookie(anchor_id+"_ot")) != ""
&& (anchor_ol = getcookie(anchor_id+"_ol")) != "") {
offset_top = (scroll_top + get_object_top(object_id)) - parseInt(anchor_ot);
offset_left = (scroll_left + get_object_left(object_id)) - parseInt(anchor_ol);
} else {
offset_top = offset_left = 0;
}
window.scrollTo(anchor_sl + offset_left, anchor_st + offset_top);
}
// アンカー消去。あえてとっておく必要がなければanchor_apply()後すぐ消去が望ましい。
function anchor_erase() {
setcookie(anchor_id+"_pid", "", -1);
setcookie(anchor_id+"_st", "", -1);
setcookie(anchor_id+"_sl", "", -1);
setcookie(anchor_id+"_oid", "", -1);
setcookie(anchor_id+"_ot", "", -1);
setcookie(anchor_id+"_ol", "", -1);
}
//-->
倉金家ホームページ
趣味の部屋/ホームページ余話
先日迷惑な情報収集アクセスを拒否するようにしたらログがすっきりして今度はさほど頻繁ではありませんがあやしいアクセスが目立つようになりました。 これについてもちょこっと対策をしてみました。 |
|
|
前回 迷惑なアクセス を撃退したらおかげでログがだいぶすっきりした。(それでも検索アクセスはずいぶん多いが。) そうすると今度はなんだかあやしいアクセスが目につくようになった。 多くは海外からだが、以前に写真をごそっと取られたことがあるのでどうも気になる。 ページで言わんとしていることと関係なく写真だけを持っていかれてこちらの意志に反した使い方をされないとも限らない。 (その後写真はjavascriptで回りをかためてしまったので取られてはいないようだが。)
|
あやしいと思われるのは以下のようなもの。 1. | メニューを通さず単発的に記事ソースのみとっていく。それに通常人間が見るブラウザなら背景画像やアイコンなど表示用部品にもアクセスするはずだが、しない。 | 2. | ときにHEADリクエストのみでGETリクエストをしない。これも人間の見るブラウザでは考えられない。どうやら更新チェックをやっているようだ。 | 3. | いくつかの離れたIPアドレスから申し合わせたようにアクセスしてくることがあり、ブラウザ名が単純でほぼ同じ。センターが指示を出して多数のロボットにアクセスさせているように思われる。 | 4. | 存在しなくなった記事に単発的に幾度もアクセスしてくる。 | 5. | 時にブラウザ名を通知してこない。あるいはもう使われていないような古いブラウザ名を通知してくる。 | 6. | ホスト名が設定されていない。海外からのあやしいアクセスに多い。 |
|
対策といってもあやしいと判断したアクセスには、見せたくないもの、特にプライバシーに関わる内容はだまって表示しないというだけのこと。パスワードをしかけたり追い返したりするほどのことでもないだろう。
|
問題はあやしいアクセスをどう判断して特定するかということだが、 A. | リストをつくる | | これはだめ。論外。毎日ログをチェックしてリストしてたらそれだけで人生が終わってしまうし、前回の写真の経験から気がついたときはもう遅い。(さらなる被害拡大の防止にはなるが。) | B. | javascriptを解しないようなのでjavascriptで表示する | | これもいまいち。それでなくても最近プログラムや内容が膨れてきて表示が遅くなってきているのにさらに遅くなる。見てくれる人みんなに迷惑がかかる。 | | 念には念をいれてというものだけにとどめておく。 | C. | cookieを持たないのでそれで判定をする。 | | これがいい。いまのとこあやしいと判断したアクセスはすべてcookieをもってこない。 | | 通常の検索アクセスもcookieはもたないが、検索よけもかねて同様に重要な部分は非表示でいいだろう。 | D. | ホスト名を通知してこないのも少しあやしい | | 概ね海外からの情報収集アクセス。ただ日本でも特に中小企業などにはけっこう多い。必ずしもこれをもってすべてあやしいとは言い切れないようだ。 |
|
cookieについて言えばこのサイトではもともとページ間あるいはページとサーバー間で制御用情報をやりとりするのにcookieを使っているのでそれを見るだけで済む。ブラウザのセキュリティー能力も充分向上しjavascriptやcookieを使うのはもうあたりまえだからいまどきjavascriptやcookieを無効にしている人もいないだろう。 ホスト名が設定されているか否かの判定も簡単だが、上記の理由で判定にいれるのはちょっと厳しいかもしれない。
|
で、 とった対策は、ページ全体あるいは一部(写真1枚ごと、文章のブロックごとなど)について、ランク0: | 非表示(これは単に書きかけ記事などをかくしておくため) | ランク1: | 常に表示 | ランク2: | 一時cookieでも持っていれば表示 | ランク3: | cookieが有効な(継続cookieを持っている)場合のみ表示 |
|
という設定が簡単にセレクトできるようにした。
もちろん表示非表示の判定と切替はサーバー側でやる必要がある。javascriptでやるとなると非表示になるかもしれない部分もいったんすべてソースには書き出す必要があるし、cookieが無効なAgent(多くは情報検索ロボット)はjavascriptも効かない可能性が高い。
|
というわけで、このサイトには手土産ならぬcookieを持ってこないと表示しない、あるいは継続cookieを確認した常連さんにしか表示しないページや内容というのがほんの少しですがありますです。 もっともこんなことだまってやれば全然わからないんだけどね。(けっこうみんなやってるのかな?)
|
|
|