2006年02月09日

凝りないSPAM

私のサイトでは、問合せをメーラーからではなく、WEBから入力してもらうようにしている。

問合せ先のメールアドレスをむやみに公開しないようにする配慮だが、先日とんでもないSPAMメールが飛込んできた。

こんな内容だったりする。(適宜に書き換えてあります)
--------------------------------------------------------------------------
お問い合わせページに以下の書き込みがありました。

should2425@*****.com からの問い合わせ:

Subject: remained
Content-Type: text/plain; charset=\"us-ascii\"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: e live in a
bcc: charleses****@aol.com

9d74a2d9aa5577659564f3752****bab
.

<本文>
should2425@*****.com
--------------------------------------------------------------------------

青色の部分は、普通こちらまで届いてこないようにしている。
はて、なぜこんなものが?しかも bcc: って、このメルアドはなんだ?

調査してみると、件名の入力欄に青色の部分をずらずらとくっつけて送信したらしい。
つまり、問合せ内容やToのメルアドをこっそり見るために、bccをつけたというわけだ。

問合せフォームの作り方によっては、この攻撃でこっそりのぞき見させられてもおかしくない所があるかもしれない。そこまでしてメルアドを収集するか>SPAM業者

幸いな事に、メールサーバからbcc送信された記録はない。プログラムの作り方がよかったらしく、水際で阻止したわけだが、他にもどんな方法でやってくるかわからないので、とりあえず cc: とか bcc: とかいうようなヘッダは無効にするように改修した。

なんだかやるせないなぁ…
posted by 管理人 at 10:34| 大阪 ????| Comment(0) | TrackBack(0) | システム | このブログの読者になる | 更新情報をチェックする

2005年12月27日

動的ページを静的ページにする(SEO対策)

タイトルだけ見るとなんの事だろうと思う人は多いかもしれない。

というか、ここは旅行系サイトを作成したりメンテしたりする苦労話で埋める場所なので(更新サボってしまいましたが(^^;)、せっかくだから今回行った対策を公開しましょう。

CGIやPHPのようなプログラミングを行う人は、大変おなじみが深い動的ページ。

例えば、やど達者では京都の格安ホテルを常に値段の安い順で表示するように作っている。
http://e-yado.cosmocity.net/kensaku/kakuyasu.php?kncd=26&yt=0

後にあるパラメータの数字を変えると、同じプログラムでも東京大阪を表示したりできるようになる。kncd=13だと東京、kncd=27だと大阪になる。これが動的ページだ。

宿単位で紹介するページも動的ページで作っている。

なにせ13000軒も登録しているのだから、全部HTMLで作ったらその労力は並み大抵ではない。

なにか変更があったら、そのページを探す方が大変ではなかろうか。さらに、全部HTMLだとそのデータ量も凄まじい。1ページを20KBとすると、13000ページで260MBに達する。これではアップロードも大変だろう。

そんなわけで、大量のデータはデータベースに登録して、それを動的に表示する方が大変効率がよいのである。

しかし、SEO対策となるとどうだろう?

GoogleやYahoo!等では、パラメータも含めてインデックスに入れてくれるようになっている話もちらほら聞くが、人間ですら「この動的ページはどのくらいデータを保有しているのかなぁ」と不安になる事がある。数十件くらいならいいけど、もしかしたら数百、数千とあるかもしれない。ましてや数万件…なら途中で「見るのやーめた」となるのが人情である。

実はGoogle等のクローラーもそういう挙動をしているのだ。動的ページも途中までの何件かは採取するけれど、一定数いくと、そこからやめるのである。
全部クロールして欲しいと思うけど、「そのページはパラメータを使う動的ページだから、もうそれ以上見ないよ」と引き上げてしまうのだ。

それなら、動的ページにしないで、全部静的ページにすればいいのだが、そんな事しようものならこっちの身がもたない。

なんとかならんものかなぁと常々思っていると、実はamazonではそういう解決方法をしていた。amazonは実に巨大なサイトだが、表示するページは全部パラメータ無しの静的なHTMLページである。全部、ひとつずつ作っているのだろうかと思うのだけれども、常識で考えてもそれはありえない。

あんなに膨大なデータを全部HTMLページで作っていたら、いかな高性能なサーバでも処理しきれまい。そう、amazonは、動的ページを静的ページに見せかける技術を施していたのである。SEO対策としても非常に有効で、ここに秘密があったのである。

いったいそれはなんだ?早く教えろ〜!という人、まず落ち着いてね(^^;

それは、「mod_rewrite」を使う方法。Apacheサーバ+「mod_rewrite」の使用が許可されている環境でのみ有効な方法だ。
他のサーバでも使用できるかもしれないが、そんな人は管理者に確認してみましょう。

たとえば、
http://www.example.com/hoge.php?id=3
という動的ページがあったとする。
idには当然パラメータが入る。

こんなケースでは、hoge.phpを置いているディレクトリの.htaccessに次のような記述をする。

RewriteEngine On
RewriteRule ^hoge-([0-9]+).html+ hoge.php?id=$1

するとどうだろう?

http://www.example.com/hoge.php?id=3 で表示されるページは
http://www.example.com/hoge-3.html でも表示されるようになるのだ。
どこから見ても、静的なHTMLページでっしゃろ。

当然、GoogleやYahoo!のクローラーがこのページを見ても、「あぁ、これはhoge-3.htmlか。安心してクロールしよう」と全部クロールしてくれるわけ。

このような書き方で動的ページを静的ページに見せかけることができる。

やど達者でも早速やってみた。

アバンヴェールホテル京都
http://e-yado.cosmocity.net/kensaku2/zenkoku.php?yid=261015
だったところを
http://e-yado.cosmocity.net/kensaku2/yado_261015.html
でも同じページで見られるようにしてみた。

そうなるとと、全部クロールしてもらう為に、全国の登録宿一覧のページも大改修だ(^^;
例えば京都の登録宿一覧。このページは膨大なリンクがつながっているが、それぞれ動的ページへのリンクが入っている。
しかし、このような静的に見せかける対策をした今、リンクは全て静的ページとなった。

人間が見ても「すごい手がかかっているなぁ」と感心するかもしれない(^^;

これで堂々と検索エンジンにクロールして頂き、数ヶ月後に結果が出るようなら、その時にまた報告しましょうか(笑)
posted by 管理人 at 23:42| 大阪 ????| Comment(0) | TrackBack(0) | システム | このブログの読者になる | 更新情報をチェックする

2005年09月10日

PHP5へ上げたらApacheが死亡

今回は、「やど達者」とは全然関係ない、サーバのお話。

私はWEB開発だけでなく、実はサーバの管理運用もしています。というか、こっちが本職かもしれません。この「やど達者」も、レンタルサーバではなく、サーバ丸ごとを借り切る専用サーバの中で構築・運用しています。

専用サーバなので、アプリケーションを入れたり、バージョンアップしたりする事は自己責任です。気分次第慎重にかつ大胆に、アプリケーションを入れ替えたりします(^^;

で、今までPHP4を使っていました。これをPHP5にメジャーバージョンアップさせようとしたわけですが、そこでトラブルが起きました(汗)

事前調査で、PHP4→PHP5にあげても大丈夫と判断して、PHP5に入れ替えたわけなのですが、その途端にApacheがフリーズしました。

いうまでもなく、Apacheは、Webサイトを表示する大事な心臓です。これが死ぬと、「やど達者」だけでなく、サーバに入れている全てのサイトが表示不可になります。

案の定、どのサイトを出そうとしても

「サイトを開けません」

「サイトが見つかりません」

「応答がありません」

と、真っ白いページに無機質なエラーメッセージの連続です。

さぁ、困った。つーか、商売で運用しているサイトもたくさんあるので、これらが全部表示不可になったら大損害です。場合によっては、賠償金を請求されかねない。いやーな汗がしたたり落ちました。

心臓バクバク、肝が冷えまくりです。


Apacheの再起動をかけても

即フリーズ。

うぉい(T_T)


仕方ないので、元のPHP4へ戻してみました。しかし、Apacheは生き返らない

…マジっすか?冗談じゃないって。サーバ管理人としても、こんな失態は容認できません。

ここは落ち着いて深呼吸をば…。いやいやこんな非常事態なのになにを呑気な。いや、だから落ち着けば…早く復旧を…損害賠償が…原因を…ワケのわからん状態になりながらも、Apacheの設定を見直す事に。

…あー、原因がわかった。httpd.confの中で

LoadModule php4_module libexec/libphp4.so
LoadModule php5_module libexec/libphp5.so

AddModule mod_php4.c
AddModule mod_php5.c

と両方のモジュールが指定されていたのがいけなかった。
速攻、PHP4の方をコメントアウトして、改めてPHP5をいれ直して再起動。

…Apacheが無事に再起動。

もちろん「やど達者」も無事に稼働。他のサイトも大丈夫。

この間、約15分間。危なかった。。。

ホントにアプリケーションの入れ替えは寿命が縮まります。今回は、3ヵ月くらい縮んだかも(汗)

ところで、なぜ、PHP5にしようとしたのかって?

新機能を使いたかったのもあるけど、大きな理由は「速くしたかった」からでした…ばきっ?p???`
posted by 管理人 at 09:31| 大阪 ????| Comment(0) | TrackBack(0) | システム | このブログの読者になる | 更新情報をチェックする