GETメソッドで登録・更新・削除処理をしない

Twitterでは相互フォロー委員会という謎の組織が話題をさらっているようだが、彼らがイベント参加者の募集に利用しているTweetviteというサイトがアレな実装になっている。

このサイトでOAuth認証していると、

http://tweetvite.com/event/mfpcnight/rsvp/Y
http://tweetvite.com/event/mfpcnight/rsvp/N

これらのURLにアクセスするだけでイベントへの参加、不参加の登録がされてしまうらしく、だまされてリンクを踏んで意図せず登録してしまった人がいるようだ。

Togetter - 「Tweetviteを利用したspamに使えそうな何か」

bit.ly等でURLを隠されると注意深い人でもリンクを踏んでしまうだろう。また、scriptタグやimgタグにこのURLを埋め込んでしまえば登録されたことすら気付かない。

HTTPの仕様ではGETメソッドはsafeであるべきという原則がある、GETメソッドではリソースの取得のみを行い、登録や更新、削除といった処理を行うべきではない。

追記

GETを使わずにPOSTを使うようにしただけでは、クロスサイトリクエストフォージェリを防ぐことはできませんが、どこかの掲示板やTwitter等にリンクを張られてイタズラされるという事は防げます。