なんとなくyanma。

www時代以前からInternetに居る人の、日常の1コマ。
Tue, 13 May 2014 15:10:39

とある不正投票検出の話

筆者がもう何年も前に思いついて、
1人1日1票とかの継続投票サイトとかを作る時にはよく使うことにしてる
不正検出のワザの話を、書いてみようと思う。


普通に思いつく「1人1日1票」制限と言えば、
おそらくはCookieに今回の投票日時を返しておく、とかだろう。
でもこれだけだと、Cookieストアを覗かれたり書き換えられたりしたら
あっさりパスされてしまうし、
Cookie丸ごと削除や無効化でも不正検出できなくなってしまう。

じゃあIPアドレスごとに1票、なんて制限にしたら
1つのNATルーター配下に居る人たちは全員で1票になってしまうし、
切断再接続でIP割り振りの替わるプロバイダ経由やモバイルでは
複数投票し放題だったり誰かに先に使われて投票できなかったり。

では、どうしたか。
まぁCookie必須ですよ、という謳い文句はサイト上に掲げるとして、
Cookieには今回の投票日時と今回のIPアドレス、
それに初回の日時とIPアドレス(今回が初なら今回のもの)も返しておくことにして。
もちろん、生で送ったらエディットし放題なので、暗号化して。

セッションに格納してセッションキーだけをCookieに返していたら、
コピーされたCookieでもそのセッションの続きになってしまうわけで、
それを回避するために、時刻値やアドレス値そのものを返すことにしたのです。
実際には、他にも調査用にいくつかの値やランダムなダミー値も付加しましたが。

結果…コピーされたCookieを使って不正投票するbotらしきものが
結構な数検出されましたね。
もっとも、その中にはWeb先読みキャッシュだったり
それに付随した危険サイト検出システムだったりも居るわけですが、
それらだって投票値からしたらカウントすべきでない値なので
集計から除外するという意味では一緒の扱いで構わないわけです。

で、とりあえず受け付けたよという画面は共通にして、
というかそんなものは画面で毎回「不正アクセスです!」って言ってもしかたないわけで。

送られてきたデータをちゃんと解析すれば、
1台のノートPCを家と会社とモバイルで使ってるヒトとか、
ひとりで家に5台のPCを並べて複数投票してるヒトとか、
そういうのも見えてくる仕組み。
IPアドレスからジオ変換までやれば、
そんな一瞬で長距離移動できねーよ!ってのも見えてくる。

まぁココにソースコードまで晒したりはしませんが、
そういう検出機構だって実装されてるかもしれませんよ?
というお話でした。

Posted by yanma  Category:ITっぽい話  comments:0

この記事のトラックバック用URL

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  • Calendar

    2024年11月
    « 4月    
     12
    3456789
    10111213141516
    17181920212223
    24252627282930
  • Attention Please

    2020、サーバ引っ越し。物理サーバからCloudへ。
    2015のBlog引っ越しで自分管理になってから5年である…

    現在のお仕事: 声から健康状態を測定して未病改善に役立てよう!
    まぁそれ以外にも個人的には音声収録編集を筆頭に、音響屋だったり舞台裏いろいろだったり、インターネットラジオ等で喋っていたり、声優・役者・ナレーションなどなど表方までも。

    お仕事ご依頼の方は、こちらへどうぞ。
    ※強力な自動SPAMフィルターが掛かってます。誤認により遅達となる場合もあることをご了承ください。

  • Search by Google

    Google


    WWWを検索 blog内を検索

  • Categories

  • Comments

  • Archives

  • Syndicate this site