Top > 質問箱 > 222

質問箱/222

サマリスパム対策について
バージョン1.4.7plus-u2-i18n
投稿者KATSUO?
状態完了
投稿日2007-04-08 (日) 10:39:44

質問

新規投稿スパムに悩まされています。

新規投稿スパムとは

たとえば、同じwiki内に「Outlook Mobile」というページがあると「outlook mobile」という新規ページを作成し、下記のような英語のみ+URLリンクを新規ページで投稿するというものです。

<a href=" http://xxxxx.xxx.com/l "> cialis </a>

設置の状況

  • さくらインターネット
    • OS Version FreeBSD 6.1-RELEASE-p10 i386
    • PHP 4.4.4
    • Apache Version Apache/1.3.37
  • WikiFarm(複数Wikiの構築)
  • Pukiwiki Plus!の~バージョン
    • 1.4.7plus-u2-i18n rev. 1440
  • フォルダの構成
    .
    |-- www
        |-- contents1
    |-- wiki-common
    |-- wiki-data
        |-- contents1
          |--pukiwiki.ini.php
          |--spam.ini.php

実際のサイトはこちら

http://windows-keitai.com/

行ったこと

  • pukiwiki.ini.phpの変更
    // Blocking SPAM
    $use_spam_check = array(
    	'page_remote_addr'	=> 1,
    	'page_contents'		=> 1,
    	'trackback'		=> 1,
    	'referer'		=> 1,
    );
    

対策1. 新規投稿時にBASIC認証を実施する

  • 新規投稿時のBASIC認証の実施 CGIでのPukiWikiによる認証 →NG 新規投稿時の認証の回避ができてしまう
  • アクセスログをみると直接index.phpをたたいているようだ 147.243.236.xx
    [05/Apr/2007:17:39:54 +0900] "POST / HTTP/1.1" 302 5 "http://windows-keitai.com/?frontpage" "Opera/9.0 (Windows NT 5.1; U; en)"
    • IPアドレスは毎回変わっているようなのでIPアドレスのブラックリストでは対処できなそう。
    • 対策の可能性 何かいいてはないでしょうか? 下記のような改造を行う!?
  1. BASIC認証配下になっている Edit.phpで Cookieを払い出す。  固定文字列を返す Session cookie で OK。
  2. lib/auth.cls.php ファイルの check_role() function (line191~)  の中に、readonly属性を確認して returnしている場所 (line197)があるが、  ここで、1.のSession Cookieがない場合には、READONLYと見なして、  Return する。  (readonlyだと返す)

対策2.

  • BASIC認証を利用する →さくらインターネットは利用できない
  • Digest認証を利用する →さくらインターネットは利用できない
    • PHP 4.4.4 要PHP5以上
    • さくらのPHPの環境(PHPをCGIとして動作)の制限

対策3.

外部認証を利用する

実施の作業

  1. はてなのIDを取得する
  2. 外部認証用APIの取得 http://auth.hatena.ne.jp/
  3. 下記のファイルを編集 /pukiwiki-data/contents1 auth.ini.php
    	'hatena'	=> array(
    		 'user_name1'	=> ROLE_ADM,
    	),
    
    auth_wkgrp.ini.php
    	// Hatena
    	'hatena'		=> array(
    		'use'           => 1,
    		'api_key'       => 'xxxxxxxxxxxxxxxxxxxxxxxx',
    		'sec_key'       => 'xxxxxxxxxx',
    	),
    
  4. pukiwiki.ini.phpで、 37行目
    // PKWK_READONLY - Prohibits editing and maintain via WWW
    //   NOTE: Counter-related functions will work now (counter, attach count, etc)
    if (! defined('PKWK_READONLY'))
    	define('PKWK_READONLY', 4); // 0,1,2,3,4
    を「4」に。
  5. MenuBarなどの一番したに
    #hatena
    
    を追加

対策3.の問題点

  • できれば回避したい問題点
    • はてなログインしないと、コメントできない。 コメントだけはできるとうれしいなぁ・・・と思っていますが何かいい手はありますか?
    • ユーザーはサブドメインの各WIKI毎に認証が必要(これがちょっとつらいか)
  • 小さい問題点
    • ログインせずにページの編集や新規ページ投稿を行おうとすると Runtime errorの表示が。 →はてなへのログインが必要です。とのメッセージの方が親切?
    • ドメイン単位で、APIキーの払い出しが必要 例) http://windows-keitai.com/ http://x01ht.windows-keitai.com/ の2つのwikiがあった場合には、それぞれ個別にAPIキーが必要

回答

  • すみません。test というページを作ってしまいました。消しておいてください。新規ページ作成の際に、認証を抜けることができるようです。 -- upk 2007-04-08 (日) 16:49:47
  • spam.ini.php についての機能は、本家でのテスト実装部分の取り込みなので、現状では、このサイトでの説明はまだありません。-- upk 2007-04-08 (日) 16:53:39
  • 設定的には、SPAM設定で逃げるというよりも、新規投稿時の認証の回避ができてしまう。という問題の対策をどうやるのが良いのか?という感じかと思っています。今回、回避した方法をここで書くわけにはいかないので、書きませんが、逃げれることは確かです。-- upk 2007-04-08 (日) 16:56:18
  • 早速レスありがとうございます。こちらご指摘のとおり新規ページ作成の際に認証を抜けることができます。上記に補足しておきますね。 -- KATSUO? 2007-04-08 (日) 20:09:51
  • rev1440であれば、外部認証にも対応しているので、TypeKeyやhatena認証を利用すれば、このような対応を行わなくても良いはずですけどね。-- upk 2007-04-08 (日) 21:34:31
  • さくらインターネットだと、BASIC認証は利用できず。PHP 4.4.4の為、Digest認証は利用できず。という理解でいいでよね?で、残るは、外部認証で、こちらだと回避できる可能性がある、というアドバイスという理解でいいですか? -- KATSUO? 2007-04-08 (日) 21:58:34
  • CGIとかとは関係ない外部認証なので、試してみるのも良いと思います。あと、PHP5 であっても、さくらの環境だとDigest認証は使えないと思いますよ。-- upk 2007-04-08 (日) 23:55:00
  • いろいろありがとうございます。upkさんのおっしゃるようにまずは外部認証やってみました。手順も上記に記載しておきます。これで、コメントだけログインせずに行うことはできたりしないですよね?^^; わがままですみません。 -- KATSUO? 2007-04-09 (月) 01:06:58
  • 新規ページの作成に関する制御機能を、rev1441 で対応してみました。お試し下さい。-- upk 2007-04-10 (火) 23:42:17
  • ありがとうございます!!! 下記に入れてみました。http://s01sh.windows-keitai.com/ -- KATSUO? 2007-04-11 (水) 16:09:42
  • TypeKyeですが、PHP 5の条件を満たしていない、&gmp bcmathに未対応なので、はてなと、JugemKeyのみ動作するようです。 -- KJM? 2007-04-12 (木) 06:56:09

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes
Last-modified: Fri, 09 Nov 2007 07:52:24 HADT (993d)