SlideShare a Scribd company logo
1 of 14
Download to read offline
Wikiスパムの傾向と対策

Date : 2005.08.01
Usage : UnixUser2005年10月号向け記事の構成検討
Author: 塚本 牧生 <tsukamoto@gmail.com>
構成

概要(2~3ページ)
実装例(3~4ページ)
まとめ(1ページ)
概要
Wikiスパムとは
 Wikiスパムの種類を説明
スパムロボットを知る
 クローラ化したロボットの挙動を提示
スパム対策を考える

Wikiスパムに対抗する
 被害までの流れと、各ステップで取れる対策

 「Wikiスパムに対抗する」を紹介
 対策法を列挙
Wikiスパムとは
 広い意味でWikiスパムを定義する
  コンテンツ改ざん
   人が - わざと(荒らし)/誤操作で。
   ロボットが - スパム投稿の結果として。
  スパム(狭義の)
   ロボットが – 宣伝、SEO目的で。
 Wikiスパム対策
  「人が」は良いコミュニティ作りと誤操作防止で
  対応できる。
  ここでは特にロボット(ツール)対策を考える。
スパムロボットを知る

   「掲示板荒らし」の時代とは違う。
        ページを取得しフォームから投稿。
        投稿時のmethodはPOST。
        Hiddenフィールドの値もちゃんと送信。
          cookie、reffererを送ってくるものも少なくない。
   「今時のスパムロボット」対策が必要。
xxxxx.xxxxxxxxxxx.net - - [28/Jul/2005:22:25:40 +0900] quot;GET GETで巡回しながら
/visit/index.cgi?Linux%A5%B6%A5%A6%A5%EB%A5%B9%2FPerl HTTP/1.1quot; 200 34383 quot;-quot;
quot;Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)“
                                                             フォームを探す



xxxxx.xxxxxxxxxxx.net - - [28/Jul/2005:22:25:43 +0900] quot;POST /visit/index.cgi HTTP/1.1quot;
302 310 quot;-quot; quot;Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)quot;
                                                                    hiddenフィールドの
                                                                      投稿はPOST、


xxxxx.xxxxxxxxxxx.net - - [28/Jul/2005:22:25:44 +0900] quot;GET
                                                                     日本語の値も送信

/visit/index.cgi?Linux%a5%b6%a5%a6%a5%eb%a5%b9%2fPerl HTTP/1.1quot; 200 34556 quot;-quot;
quot;Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)quot;
                                                             投稿結果からの
                                                            リダイレクトにも対応
スパム対策を考える
       ミサイルのタイムラインモデル(AsO, 塚本, 2005.07)
             スパマの各アクションタイミングでのスパム対策を考える。
             誰かの閲覧、クローラのアクセスまでが勝負。



                                                           (迎撃)

   開戦               索敵          照準             発射                        着弾            爆発(=被害発生)
                                                                                       (誰かが閲覧)
 アクセス          フォーム検索              スパム投稿             (サーバ側処理)                 書き変え完了
                                                                                       (クローラ巡回)
            フォームを隠す             投稿者を認証する             ロボットを排除する           すばやく修正する
                                                     ・Cookieなど
            偽フォームをおく            ロボットを排除する                                ・更新通知メール
                                ・CAPTCHA             スパムを排除する            ・履歴と「戻す」機能

                                                                 更新             更新
                                                       適用

                                                           ブラックリスト
                                                           (IPアドレス、禁止URL、禁止Word、…)


Copyright by AsO@麻生電子科学研究所 and 塚本 牧生
Licensed under CC-Wiki 0.5 (http://creativecommons.org/licenses/by-sa/2.5/)
実装例

ブラックリスト
 ルールベースでのスパム対策の実装例を示す。
更新通知メール
 手作業での対応のサポートツール実装例を示す。
フォームを隠す&ダミーフォームを作る
 ロボットの行動パターンを考えた対策例を示す。
実装例:ブラックリスト

ブラックリストページと、その解析部分を作る。
投稿内容をブラックリストと照らし合わせる。
  投稿:スタート        コメント:スタート

                 do_comment

   do_write
   ・凍結状態で編集権限がなければ拒否

   ・スパムチェックでNGであれば拒否
   ・編集可能なページ以外であれば拒否
    スパムチェックで  であれば拒否
              であれば
   ・保存
   ・メールでの更新通知

            完了
実装例:更新通知メール

更新通知メールを作る
ブラックリスト追加用のページを作る
    ブラックリスト追加ページへのリンクをメールに
    載せる。
Date: Tue, 21 Feb 2006 01:15:04 +0900 (JST)
 Date: Tue, 21 Feb 2006 01:15:04 +0900 (JST)
From: owner@yourwiki.example.com
 From: owner@yourwiki.example.com
To: owner@yourwiki.example.com
 To: owner@yourwiki.example.com
Subject: [Wiki] UpdatedPageName
 Subject: [Wiki] UpdatedPageName
--------
 --------
REMOTE_ADDR = 172.28.19.172
 REMOTE_ADDR = 172.28.19.172
ADD_FILTER = http://yourwiki.example.com/index.cgi?addfilter=172.28.19.172
 ADD_FILTER = http://yourwiki.example.com/index.cgi?addfilter=172.28.19.172
--------
 --------
UpdatedPageName
 UpdatedPageName
--------
 --------
= [[#rcomment]]
 = [[#rcomment]]
+ - 2006-02-21 (Tue) 01:15:03 ''[[spammer]]'' : ○○が特価で販売!
 + - 2006-02-21 (Tue) 01:15:03 ''[[spammer]]'' : ○○が特価で販売!
= - -2006-02-20 (Mon) 22:52:32 ''[[管理者]]'' : :更新メールの内容です。
 = 2006-02-20 (Mon) 22:52:32 ''[[管理者]]'' 更新メールの内容です。
実装例:フォームを隠す

 ロボットには見えない編集フォーム
 a.   ページ全体をXML+XSLT化
      JavaScriptでフォーム生成
 b.
実装例:ダミーフォームを作る

人間には見えないトラップフォーム
 CSSで非表示化
 トラップフォームからの投稿者はブラックリストに
 追加
まとめ
「Stemming the menace of wiki
spamming」(News Forge, 2005.06)の紹介。
  訳文 : Wikiスパムに対抗する (JAPAN.LiNUX.COM,
  2005.06)
スパム対策の考え方
  機械的に排除できるものは自動で排除
    ルールベースなので精度に限界がある。
    ルールを厳しくすれば一般利用者が不便になる。
  機械のチェックをすり抜けたものは手作業で排除。

  Wikiシステムとしては、ルールベースのフィルタツールと、
    人手なので対応できる規模に限界がある。

  手作業を楽にするサポートツールの実装を考える。
参考:Wikiスパムに対抗する

  初出 : Stemming the menace of wiki spamming
現在のWikiスパム関連の情報がまとまった記事。
  (News Forge, 2005.06)
  訳文 : Wikiスパムに対抗する (JAPAN.LiNUX.COM, 2005.06)
主な対抗策

    .htaccessによる認証など … 投稿者を限定する
  認証

    CAPTCHA(画像認証)など … ロボットを排除する
  スパムの検出
    ブラックリストとホワイトリスト(投稿者のIPアドレス、単語、URLなど)
    内容分析。SpamAssasinの流用などが検討されている。
    行動に基づくバンリスト。
  その他
    スパムページを探し削除する。
    リンクに「nofollow」属性を付ける(SEO効果をなくす)。
    使われていないゴーストWikiを停止する。
参考 : スパム被害までの時間軸(詳細版)

  「Wikiスパムに対抗する」などを反映
                                           (迎撃)

 開戦         索敵          照準        発射                 着弾              爆発(=被害発生)
                                                                     (誰かの閲覧)
アクセス    フォーム検索            スパム投稿        (サーバ側処理)       書き変え完了
                                                                     (クローラ巡回)
       フォームを隠す          投稿者を限定する       ロボットを排除する     すばやく修正する
       ・XML+XSLTで生成                    ・Cookie
                        ・認証                          ・更新通知メール
       ・JavaScriptで生成   ・TypeKey認証     ・Refferer検証   ・履歴と「戻す」機能
                                       ・Hidden値検証    ・時間モデレーション
                                       ・GET拒否
       偽(罠)フォームをおく      ロボット排除
       ・CSSでブラウザには      ・CAPTHA        ・多重投稿拒否       ブラックリストを更新する
        不可視化                           ・連続投稿拒否       ・専用更新画面
                                                     ・通知メールにURL
                                       ・投稿間隔設定

                                       スパムを検出する
                                       ・ブラックリスト
                                       ・ベイジアンフィルタ

                                               更新         更新
                                        適用

                                           ブラックリスト
                                           (IPアドレス、禁止URL、禁止Word、…)

More Related Content

What's hot

淺嚐新火狐
淺嚐新火狐淺嚐新火狐
淺嚐新火狐Bob Chao
 
Howtousenetboss
HowtousenetbossHowtousenetboss
Howtousenetbosskumee
 
CAPとBASEとEventually Consistent
CAPとBASEとEventually ConsistentCAPとBASEとEventually Consistent
CAPとBASEとEventually ConsistentYohei Yamamoto
 
Webpeckerv7 Datasheet
Webpeckerv7 DatasheetWebpeckerv7 Datasheet
Webpeckerv7 Datasheetport80
 
Namo Web Solution
Namo Web SolutionNamo Web Solution
Namo Web Solutionbenson56
 
KINH NGHIÊM BỐ TRÍ LÕI VÁCH THANG MÁY
KINH NGHIÊM BỐ TRÍ LÕI VÁCH THANG MÁYKINH NGHIÊM BỐ TRÍ LÕI VÁCH THANG MÁY
KINH NGHIÊM BỐ TRÍ LÕI VÁCH THANG MÁYVOBAOTOAN
 
クロスレビュー
クロスレビュークロスレビュー
クロスレビュー武 河野
 
イケテルRuby開発環境
イケテルRuby開発環境イケテルRuby開発環境
イケテルRuby開発環境mokada
 
WebHookの調査と実装
WebHookの調査と実装WebHookの調査と実装
WebHookの調査と実装moai kids
 
Windows MobileとWeb Api
Windows MobileとWeb ApiWindows MobileとWeb Api
Windows MobileとWeb ApiKenji Wada
 
HCCソフト会社紹介
HCCソフト会社紹介HCCソフト会社紹介
HCCソフト会社紹介ssusercbaf23
 
Slide Template with Microsoft PowerPoint
Slide Template with Microsoft PowerPointSlide Template with Microsoft PowerPoint
Slide Template with Microsoft PowerPointBoonlert Aroonpiboon
 
モバイルでIRCを活用する with EbIRC
モバイルでIRCを活用する with EbIRCモバイルでIRCを活用する with EbIRC
モバイルでIRCを活用する with EbIRCShin Ise
 
자바 네트워킹 기초에서 응용까지
자바 네트워킹 기초에서 응용까지자바 네트워킹 기초에서 응용까지
자바 네트워킹 기초에서 응용까지trustinlee
 
Candycane overview
Candycane overviewCandycane overview
Candycane overviewYusuke Ando
 
ケータイサイトのはなし(入門編)
ケータイサイトのはなし(入門編)ケータイサイトのはなし(入門編)
ケータイサイトのはなし(入門編)Kentaro Matsui
 

What's hot (20)

淺嚐新火狐
淺嚐新火狐淺嚐新火狐
淺嚐新火狐
 
Howtousenetboss
HowtousenetbossHowtousenetboss
Howtousenetboss
 
CAPとBASEとEventually Consistent
CAPとBASEとEventually ConsistentCAPとBASEとEventually Consistent
CAPとBASEとEventually Consistent
 
Webpeckerv7 Datasheet
Webpeckerv7 DatasheetWebpeckerv7 Datasheet
Webpeckerv7 Datasheet
 
webwork2guide
webwork2guidewebwork2guide
webwork2guide
 
okyuu.com x Rails x OpenID
okyuu.com x Rails x OpenIDokyuu.com x Rails x OpenID
okyuu.com x Rails x OpenID
 
Namo Web Solution
Namo Web SolutionNamo Web Solution
Namo Web Solution
 
KINH NGHIÊM BỐ TRÍ LÕI VÁCH THANG MÁY
KINH NGHIÊM BỐ TRÍ LÕI VÁCH THANG MÁYKINH NGHIÊM BỐ TRÍ LÕI VÁCH THANG MÁY
KINH NGHIÊM BỐ TRÍ LÕI VÁCH THANG MÁY
 
クロスレビュー
クロスレビュークロスレビュー
クロスレビュー
 
git-svn intro
git-svn introgit-svn intro
git-svn intro
 
イケテルRuby開発環境
イケテルRuby開発環境イケテルRuby開発環境
イケテルRuby開発環境
 
WebHookの調査と実装
WebHookの調査と実装WebHookの調査と実装
WebHookの調査と実装
 
Web2.0 and Ruby
Web2.0 and RubyWeb2.0 and Ruby
Web2.0 and Ruby
 
Windows MobileとWeb Api
Windows MobileとWeb ApiWindows MobileとWeb Api
Windows MobileとWeb Api
 
HCCソフト会社紹介
HCCソフト会社紹介HCCソフト会社紹介
HCCソフト会社紹介
 
Slide Template with Microsoft PowerPoint
Slide Template with Microsoft PowerPointSlide Template with Microsoft PowerPoint
Slide Template with Microsoft PowerPoint
 
モバイルでIRCを活用する with EbIRC
モバイルでIRCを活用する with EbIRCモバイルでIRCを活用する with EbIRC
モバイルでIRCを活用する with EbIRC
 
자바 네트워킹 기초에서 응용까지
자바 네트워킹 기초에서 응용까지자바 네트워킹 기초에서 응용까지
자바 네트워킹 기초에서 응용까지
 
Candycane overview
Candycane overviewCandycane overview
Candycane overview
 
ケータイサイトのはなし(入門編)
ケータイサイトのはなし(入門編)ケータイサイトのはなし(入門編)
ケータイサイトのはなし(入門編)
 

Viewers also liked

イントラの中のWiki
イントラの中のWikiイントラの中のWiki
イントラの中のWikikan
 
求められているエンジニアのナレッジってなに?
求められているエンジニアのナレッジってなに?求められているエンジニアのナレッジってなに?
求められているエンジニアのナレッジってなに?MKT International Inc.
 
ラーメン屋さんの情報共有クラウドサービス
ラーメン屋さんの情報共有クラウドサービスラーメン屋さんの情報共有クラウドサービス
ラーメン屋さんの情報共有クラウドサービス伸夫 森本
 
Wiki設置するならgitit!
Wiki設置するならgitit!Wiki設置するならgitit!
Wiki設置するならgitit!Kiwamu Okabe
 
組織的なウィキ(wiki)の導入
組織的なウィキ(wiki)の導入組織的なウィキ(wiki)の導入
組織的なウィキ(wiki)の導入Makio Tsukamoto
 
リブセンスのインフラで使ってるAnsibleのお話
リブセンスのインフラで使ってるAnsibleのお話リブセンスのインフラで使ってるAnsibleのお話
リブセンスのインフラで使ってるAnsibleのお話Shohei Koyama
 
スクラムの心(公開用)
スクラムの心(公開用)スクラムの心(公開用)
スクラムの心(公開用)Eiichi Hayashi
 
とある情報の超整理術
とある情報の超整理術とある情報の超整理術
とある情報の超整理術Masahito Zembutsu
 
日々の気づきをふりかえり、 個人とチームの成長につなげる方法
日々の気づきをふりかえり、 個人とチームの成長につなげる方法日々の気づきをふりかえり、 個人とチームの成長につなげる方法
日々の気づきをふりかえり、 個人とチームの成長につなげる方法株式会社コパイロツト COPILOT Inc.
 
情報共有ツールの情報共有
情報共有ツールの情報共有情報共有ツールの情報共有
情報共有ツールの情報共有Ken SASAKI
 
Dev opsが注目されている理由
Dev opsが注目されている理由Dev opsが注目されている理由
Dev opsが注目されている理由淳一 新野
 
組織のナレッジ共有の促進方法 - 人を動かす
組織のナレッジ共有の促進方法 - 人を動かす組織のナレッジ共有の促進方法 - 人を動かす
組織のナレッジ共有の促進方法 - 人を動かす貴仁 大和屋
 
発想の飛躍を生み出すクリエイティブシンキング
発想の飛躍を生み出すクリエイティブシンキング発想の飛躍を生み出すクリエイティブシンキング
発想の飛躍を生み出すクリエイティブシンキングYusuke Kuroda
 
課題管理と情報共有のためのツール群
課題管理と情報共有のためのツール群課題管理と情報共有のためのツール群
課題管理と情報共有のためのツール群onozaty
 
オープンソースの情報共有の仕組み「Knowledge」の使い方説明
オープンソースの情報共有の仕組み「Knowledge」の使い方説明オープンソースの情報共有の仕組み「Knowledge」の使い方説明
オープンソースの情報共有の仕組み「Knowledge」の使い方説明koda3
 
Wikiみたいなマンション 沢田マンション
Wikiみたいなマンション 沢田マンションWikiみたいなマンション 沢田マンション
Wikiみたいなマンション 沢田マンションTakeshi Kakeda
 
情報共有ツールお悩みNight #1 「情報共有ツール導入することがある私が導入されるときの話(とくに初動面)」
情報共有ツールお悩みNight #1 「情報共有ツール導入することがある私が導入されるときの話(とくに初動面)」情報共有ツールお悩みNight #1 「情報共有ツール導入することがある私が導入されるときの話(とくに初動面)」
情報共有ツールお悩みNight #1 「情報共有ツール導入することがある私が導入されるときの話(とくに初動面)」Seigo Tanaka
 

Viewers also liked (20)

Wikiばな
WikiばなWikiばな
Wikiばな
 
イントラの中のWiki
イントラの中のWikiイントラの中のWiki
イントラの中のWiki
 
求められているエンジニアのナレッジってなに?
求められているエンジニアのナレッジってなに?求められているエンジニアのナレッジってなに?
求められているエンジニアのナレッジってなに?
 
ラーメン屋さんの情報共有クラウドサービス
ラーメン屋さんの情報共有クラウドサービスラーメン屋さんの情報共有クラウドサービス
ラーメン屋さんの情報共有クラウドサービス
 
Wiki設置するならgitit!
Wiki設置するならgitit!Wiki設置するならgitit!
Wiki設置するならgitit!
 
組織的なウィキ(wiki)の導入
組織的なウィキ(wiki)の導入組織的なウィキ(wiki)の導入
組織的なウィキ(wiki)の導入
 
ChatOps@研究室
ChatOps@研究室ChatOps@研究室
ChatOps@研究室
 
Organisational Wiki Adoption
Organisational Wiki AdoptionOrganisational Wiki Adoption
Organisational Wiki Adoption
 
リブセンスのインフラで使ってるAnsibleのお話
リブセンスのインフラで使ってるAnsibleのお話リブセンスのインフラで使ってるAnsibleのお話
リブセンスのインフラで使ってるAnsibleのお話
 
スクラムの心(公開用)
スクラムの心(公開用)スクラムの心(公開用)
スクラムの心(公開用)
 
とある情報の超整理術
とある情報の超整理術とある情報の超整理術
とある情報の超整理術
 
日々の気づきをふりかえり、 個人とチームの成長につなげる方法
日々の気づきをふりかえり、 個人とチームの成長につなげる方法日々の気づきをふりかえり、 個人とチームの成長につなげる方法
日々の気づきをふりかえり、 個人とチームの成長につなげる方法
 
情報共有ツールの情報共有
情報共有ツールの情報共有情報共有ツールの情報共有
情報共有ツールの情報共有
 
Dev opsが注目されている理由
Dev opsが注目されている理由Dev opsが注目されている理由
Dev opsが注目されている理由
 
組織のナレッジ共有の促進方法 - 人を動かす
組織のナレッジ共有の促進方法 - 人を動かす組織のナレッジ共有の促進方法 - 人を動かす
組織のナレッジ共有の促進方法 - 人を動かす
 
発想の飛躍を生み出すクリエイティブシンキング
発想の飛躍を生み出すクリエイティブシンキング発想の飛躍を生み出すクリエイティブシンキング
発想の飛躍を生み出すクリエイティブシンキング
 
課題管理と情報共有のためのツール群
課題管理と情報共有のためのツール群課題管理と情報共有のためのツール群
課題管理と情報共有のためのツール群
 
オープンソースの情報共有の仕組み「Knowledge」の使い方説明
オープンソースの情報共有の仕組み「Knowledge」の使い方説明オープンソースの情報共有の仕組み「Knowledge」の使い方説明
オープンソースの情報共有の仕組み「Knowledge」の使い方説明
 
Wikiみたいなマンション 沢田マンション
Wikiみたいなマンション 沢田マンションWikiみたいなマンション 沢田マンション
Wikiみたいなマンション 沢田マンション
 
情報共有ツールお悩みNight #1 「情報共有ツール導入することがある私が導入されるときの話(とくに初動面)」
情報共有ツールお悩みNight #1 「情報共有ツール導入することがある私が導入されるときの話(とくに初動面)」情報共有ツールお悩みNight #1 「情報共有ツール導入することがある私が導入されるときの話(とくに初動面)」
情報共有ツールお悩みNight #1 「情報共有ツール導入することがある私が導入されるときの話(とくに初動面)」
 

More from Makio Tsukamoto

おひとりさまAWS Organizationsのススメ
おひとりさまAWS OrganizationsのススメおひとりさまAWS Organizationsのススメ
おひとりさまAWS OrganizationsのススメMakio Tsukamoto
 
「しばらくお待ちください」の表側で
「しばらくお待ちください」の表側で「しばらくお待ちください」の表側で
「しばらくお待ちください」の表側でMakio Tsukamoto
 
Tumblr meetup Osaki 2011 - Tumblr for Organizations.
Tumblr meetup Osaki 2011 - Tumblr for Organizations.Tumblr meetup Osaki 2011 - Tumblr for Organizations.
Tumblr meetup Osaki 2011 - Tumblr for Organizations.Makio Tsukamoto
 
Tumblr meetup Osaki 2011 - we heart Tumblr.
Tumblr meetup Osaki 2011 - we heart Tumblr.Tumblr meetup Osaki 2011 - we heart Tumblr.
Tumblr meetup Osaki 2011 - we heart Tumblr.Makio Tsukamoto
 
What's up OKI SNS (07/09/25)
What's up OKI SNS (07/09/25)What's up OKI SNS (07/09/25)
What's up OKI SNS (07/09/25)Makio Tsukamoto
 
[第八回Wikiばな発表用] 群集の知恵・集団的知性とWikiコラボレーション
[第八回Wikiばな発表用] 群集の知恵・集団的知性とWikiコラボレーション[第八回Wikiばな発表用] 群集の知恵・集団的知性とWikiコラボレーション
[第八回Wikiばな発表用] 群集の知恵・集団的知性とWikiコラボレーションMakio Tsukamoto
 
群衆の知恵・集団的知性とWikiコラボレーション
群衆の知恵・集団的知性とWikiコラボレーション群衆の知恵・集団的知性とWikiコラボレーション
群衆の知恵・集団的知性とWikiコラボレーションMakio Tsukamoto
 
PHPUnit+SeleniumによるWebテスト
PHPUnit+SeleniumによるWebテストPHPUnit+SeleniumによるWebテスト
PHPUnit+SeleniumによるWebテストMakio Tsukamoto
 
Enterprise 2.0 : 社内Wikiの目的
Enterprise 2.0 : 社内Wikiの目的Enterprise 2.0 : 社内Wikiの目的
Enterprise 2.0 : 社内Wikiの目的Makio Tsukamoto
 

More from Makio Tsukamoto (14)

おひとりさまAWS Organizationsのススメ
おひとりさまAWS OrganizationsのススメおひとりさまAWS Organizationsのススメ
おひとりさまAWS Organizationsのススメ
 
Cloud native computing
Cloud native computingCloud native computing
Cloud native computing
 
noteの活かし方
noteの活かし方noteの活かし方
noteの活かし方
 
「しばらくお待ちください」の表側で
「しばらくお待ちください」の表側で「しばらくお待ちください」の表側で
「しばらくお待ちください」の表側で
 
Wiki概念の多様性
Wiki概念の多様性Wiki概念の多様性
Wiki概念の多様性
 
Tumblr meetup Osaki 2011 - Tumblr for Organizations.
Tumblr meetup Osaki 2011 - Tumblr for Organizations.Tumblr meetup Osaki 2011 - Tumblr for Organizations.
Tumblr meetup Osaki 2011 - Tumblr for Organizations.
 
Tumblr meetup Osaki 2011 - we heart Tumblr.
Tumblr meetup Osaki 2011 - we heart Tumblr.Tumblr meetup Osaki 2011 - we heart Tumblr.
Tumblr meetup Osaki 2011 - we heart Tumblr.
 
私とwikiとconfluence
私とwikiとconfluence私とwikiとconfluence
私とwikiとconfluence
 
What's up OKI SNS (07/09/25)
What's up OKI SNS (07/09/25)What's up OKI SNS (07/09/25)
What's up OKI SNS (07/09/25)
 
[第八回Wikiばな発表用] 群集の知恵・集団的知性とWikiコラボレーション
[第八回Wikiばな発表用] 群集の知恵・集団的知性とWikiコラボレーション[第八回Wikiばな発表用] 群集の知恵・集団的知性とWikiコラボレーション
[第八回Wikiばな発表用] 群集の知恵・集団的知性とWikiコラボレーション
 
群衆の知恵・集団的知性とWikiコラボレーション
群衆の知恵・集団的知性とWikiコラボレーション群衆の知恵・集団的知性とWikiコラボレーション
群衆の知恵・集団的知性とWikiコラボレーション
 
Wikizenアパート
WikizenアパートWikizenアパート
Wikizenアパート
 
PHPUnit+SeleniumによるWebテスト
PHPUnit+SeleniumによるWebテストPHPUnit+SeleniumによるWebテスト
PHPUnit+SeleniumによるWebテスト
 
Enterprise 2.0 : 社内Wikiの目的
Enterprise 2.0 : 社内Wikiの目的Enterprise 2.0 : 社内Wikiの目的
Enterprise 2.0 : 社内Wikiの目的
 

Wikiスパムの傾向と対策

  • 1. Wikiスパムの傾向と対策 Date : 2005.08.01 Usage : UnixUser2005年10月号向け記事の構成検討 Author: 塚本 牧生 <tsukamoto@gmail.com>
  • 4. Wikiスパムとは 広い意味でWikiスパムを定義する コンテンツ改ざん 人が - わざと(荒らし)/誤操作で。 ロボットが - スパム投稿の結果として。 スパム(狭義の) ロボットが – 宣伝、SEO目的で。 Wikiスパム対策 「人が」は良いコミュニティ作りと誤操作防止で 対応できる。 ここでは特にロボット(ツール)対策を考える。
  • 5. スパムロボットを知る 「掲示板荒らし」の時代とは違う。 ページを取得しフォームから投稿。 投稿時のmethodはPOST。 Hiddenフィールドの値もちゃんと送信。 cookie、reffererを送ってくるものも少なくない。 「今時のスパムロボット」対策が必要。 xxxxx.xxxxxxxxxxx.net - - [28/Jul/2005:22:25:40 +0900] quot;GET GETで巡回しながら /visit/index.cgi?Linux%A5%B6%A5%A6%A5%EB%A5%B9%2FPerl HTTP/1.1quot; 200 34383 quot;-quot; quot;Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)“ フォームを探す xxxxx.xxxxxxxxxxx.net - - [28/Jul/2005:22:25:43 +0900] quot;POST /visit/index.cgi HTTP/1.1quot; 302 310 quot;-quot; quot;Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)quot; hiddenフィールドの 投稿はPOST、 xxxxx.xxxxxxxxxxx.net - - [28/Jul/2005:22:25:44 +0900] quot;GET 日本語の値も送信 /visit/index.cgi?Linux%a5%b6%a5%a6%a5%eb%a5%b9%2fPerl HTTP/1.1quot; 200 34556 quot;-quot; quot;Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)quot; 投稿結果からの リダイレクトにも対応
  • 6. スパム対策を考える ミサイルのタイムラインモデル(AsO, 塚本, 2005.07) スパマの各アクションタイミングでのスパム対策を考える。 誰かの閲覧、クローラのアクセスまでが勝負。 (迎撃) 開戦 索敵 照準 発射 着弾 爆発(=被害発生) (誰かが閲覧) アクセス フォーム検索 スパム投稿 (サーバ側処理) 書き変え完了 (クローラ巡回) フォームを隠す 投稿者を認証する ロボットを排除する すばやく修正する ・Cookieなど 偽フォームをおく ロボットを排除する ・更新通知メール ・CAPTCHA スパムを排除する ・履歴と「戻す」機能 更新 更新 適用 ブラックリスト (IPアドレス、禁止URL、禁止Word、…) Copyright by AsO@麻生電子科学研究所 and 塚本 牧生 Licensed under CC-Wiki 0.5 (http://creativecommons.org/licenses/by-sa/2.5/)
  • 8. 実装例:ブラックリスト ブラックリストページと、その解析部分を作る。 投稿内容をブラックリストと照らし合わせる。 投稿:スタート コメント:スタート do_comment do_write ・凍結状態で編集権限がなければ拒否 ・スパムチェックでNGであれば拒否 ・編集可能なページ以外であれば拒否 スパムチェックで であれば拒否 であれば ・保存 ・メールでの更新通知 完了
  • 9. 実装例:更新通知メール 更新通知メールを作る ブラックリスト追加用のページを作る ブラックリスト追加ページへのリンクをメールに 載せる。 Date: Tue, 21 Feb 2006 01:15:04 +0900 (JST) Date: Tue, 21 Feb 2006 01:15:04 +0900 (JST) From: owner@yourwiki.example.com From: owner@yourwiki.example.com To: owner@yourwiki.example.com To: owner@yourwiki.example.com Subject: [Wiki] UpdatedPageName Subject: [Wiki] UpdatedPageName -------- -------- REMOTE_ADDR = 172.28.19.172 REMOTE_ADDR = 172.28.19.172 ADD_FILTER = http://yourwiki.example.com/index.cgi?addfilter=172.28.19.172 ADD_FILTER = http://yourwiki.example.com/index.cgi?addfilter=172.28.19.172 -------- -------- UpdatedPageName UpdatedPageName -------- -------- = [[#rcomment]] = [[#rcomment]] + - 2006-02-21 (Tue) 01:15:03 ''[[spammer]]'' : ○○が特価で販売! + - 2006-02-21 (Tue) 01:15:03 ''[[spammer]]'' : ○○が特価で販売! = - -2006-02-20 (Mon) 22:52:32 ''[[管理者]]'' : :更新メールの内容です。 = 2006-02-20 (Mon) 22:52:32 ''[[管理者]]'' 更新メールの内容です。
  • 10. 実装例:フォームを隠す ロボットには見えない編集フォーム a. ページ全体をXML+XSLT化 JavaScriptでフォーム生成 b.
  • 12. まとめ 「Stemming the menace of wiki spamming」(News Forge, 2005.06)の紹介。 訳文 : Wikiスパムに対抗する (JAPAN.LiNUX.COM, 2005.06) スパム対策の考え方 機械的に排除できるものは自動で排除 ルールベースなので精度に限界がある。 ルールを厳しくすれば一般利用者が不便になる。 機械のチェックをすり抜けたものは手作業で排除。 Wikiシステムとしては、ルールベースのフィルタツールと、 人手なので対応できる規模に限界がある。 手作業を楽にするサポートツールの実装を考える。
  • 13. 参考:Wikiスパムに対抗する 初出 : Stemming the menace of wiki spamming 現在のWikiスパム関連の情報がまとまった記事。 (News Forge, 2005.06) 訳文 : Wikiスパムに対抗する (JAPAN.LiNUX.COM, 2005.06) 主な対抗策 .htaccessによる認証など … 投稿者を限定する 認証 CAPTCHA(画像認証)など … ロボットを排除する スパムの検出 ブラックリストとホワイトリスト(投稿者のIPアドレス、単語、URLなど) 内容分析。SpamAssasinの流用などが検討されている。 行動に基づくバンリスト。 その他 スパムページを探し削除する。 リンクに「nofollow」属性を付ける(SEO効果をなくす)。 使われていないゴーストWikiを停止する。
  • 14. 参考 : スパム被害までの時間軸(詳細版) 「Wikiスパムに対抗する」などを反映 (迎撃) 開戦 索敵 照準 発射 着弾 爆発(=被害発生) (誰かの閲覧) アクセス フォーム検索 スパム投稿 (サーバ側処理) 書き変え完了 (クローラ巡回) フォームを隠す 投稿者を限定する ロボットを排除する すばやく修正する ・XML+XSLTで生成 ・Cookie ・認証 ・更新通知メール ・JavaScriptで生成 ・TypeKey認証 ・Refferer検証 ・履歴と「戻す」機能 ・Hidden値検証 ・時間モデレーション ・GET拒否 偽(罠)フォームをおく ロボット排除 ・CSSでブラウザには ・CAPTHA ・多重投稿拒否 ブラックリストを更新する 不可視化 ・連続投稿拒否 ・専用更新画面 ・通知メールにURL ・投稿間隔設定 スパムを検出する ・ブラックリスト ・ベイジアンフィルタ 更新 更新 適用 ブラックリスト (IPアドレス、禁止URL、禁止Word、…)