XOOPSマニア  最新情報のRSS(サイト全体)
[ 自宅サーバーWebRing |ID=54 前後5表示乱移動サイト一覧 ]

08年8月30日(Sat) 13時38分
[ Page comments(0) ] [ Track Back(1) ]
Counter: 2129, today: 2, yesterday: 1

POST SPAM 対策を考える Fixed link

最近、POST SPAM がうざい鬱陶しいので、ちょっと対策を考えてみました。

面倒なので、XOOPS全体でPOST時にチェックをかけてみます。

HypCommonFunc に関数を追加。 Fixed link

<a>タグの数、BBコードの[URL=]の数、URLの数をカウントします。

汎用関数の get_postspam_avr() で POSTデータ中に含まれる合計を取得できます。

	// POST SPAM Check
	function PostSpam_Check($post)
	{
		static $filters = NULL;
		if (is_null($filters)) {$filters = HypCommonFunc::PostSpam_filter();}
		$counts = array();
		$counts[0] = $counts[1] = $counts[2] = $counts[3] = 0;
		foreach($post as $dat)
		{
			$tmp = array();
			$tmp['a'] = $tmp['bb'] = $tmp['url'] = $tmp['filter'] = 0;
			if (is_array($dat))
			{
				list($tmp['a'],$tmp['bb'],$tmp['url'],$tmp['filter']) = HypCommonFunc::PostSpam_Check($dat);
			}
			else
			{
				// <a> タグの個数
				$tmp['a'] = count(preg_split("/<a.+?\/a>/i",$dat)) - 1;
				// [url] タグの個数
				$tmp['bb'] = count(preg_split("/\[url=.+?\/url\]/i",$dat)) - 1;
				// URL の個数
				$tmp['url'] = count(preg_split("/(ht|f)tps?:\/\/[^\s]+/i",$dat)) - 1;
				// フィルター
				if ($filters)
				{
					foreach($filters as $reg => $point)
					{
						$counts[3] += (count(preg_split($reg,$dat)) - 1) * $point;
						//echo $dat."<br>".$reg.": ".$counts[3]."<hr>";
					}
				}
			}
			$counts[0] += $tmp['a'];
			$counts[1] += $tmp['bb'];
			$counts[2] += $tmp['url'];
			$counts[3] += $tmp['filter'];
		}
		return $counts;
	}
	
	// POST SPAM フィルター
	function PostSpam_filter($reg="", $point=1)
	{
		static $regs = array();
		if (empty($reg)) {return $regs;}
		$regs[$reg] = $point;
	}
	
	// POST SPAM Check 汎用関数
	function get_postspam_avr($alink=1,$bb=1,$url=1)
	{
		if ($_SERVER['REQUEST_METHOD'] == 'POST')
		{
			list($a_p,$bb_p,$url_p,$filter_p) = HypCommonFunc::PostSpam_Check($_POST);
			return $a_p * $alink + $bb_p * $bb + $url_p * $url + $filter_p;
		}
		else
		{
			return 0;
		}
	}

XOOPS_ROOT/include/common.php の最後に次の内容を書き加えます。 Fixed link

この例では、ゲストは 15ポイント超、ログインユーザーは 30ポイント超で、弾かれます。

	// PostSpam をチェック by nao-pon
	HypCommonFunc::PostSpam_filter("/((?:ht|f)tps?:\/\/[!~*'();\/?:\@&=+\$,%#\w.-]+).*?<a.+?\\1.+?\/a>.*?\[url=\\1.+?\/url\]/is", 11);
	if (!is_object($xoopsUser))
	{
		if (HypCommonFunc::get_postspam_avr() > 15)
		{
			header("Location: ".XOOPS_URL."/");
			exit();
		}
	}
	else if (!$xoopsUserIsAdmin)
	{
		if (HypCommonFunc::get_postspam_avr() > 30)
		{
			header("Location: ".XOOPS_URL."/");
			exit();
		}
	}

しばらく、これで様子を見てみて調子がいいようなら CVS に投入します。


  • おおおおおぉぉぉぉぉぉ!!はじくテキストパターンも簡単に追加できるようになるといいなぁ。でもこのままでも最高! -- t_miyabi 2006-08-28 (月) 16:12:15
  • そうですね。テキストパターンフィルターも必要ですね。ということで上記のコードを修正しました。
    正規表現のフィルターとその加算ポイントを追加できます。
    とりあえず追加したフィルターは、
    HypCommonFunc::PostSpam_filter("/((?:ht|f)tps?:\/\/[!~*'();\/?:\@&=+\$,%#\w.-]+).*?<a.+?\\1.+?\/a>.*?\[url=\\1.+?\/url\]/is", 11);
    です。
    -- nao-pon♦iq8llSWq9g 2006-08-29 (火) 10:51:32

Name:

似たような BLOG Fixed link

Last-Modified:2008/08/30 10:59:48

付箋機能(wema) メニュー 
付箋の編集
文字色: 背景色:
お名前:  線接続id:


Reload   Diff Source Attach Attach List   Wiki Top Page List Search Resent Chenges Backup   Help   RSS feed
Page name:徒然日記/2006-08-28 [ Sended pings(7) ]
Author:nao-pon - 2006/08/29 10:51:32 JST(732d)
Last edit:nao-pon - 2006/08/29 10:51:32 JST(732d)
Editers:nao-pon
Back Link:nao-pon(144d) CVS(318d) t_miyabi(789d) XOOPS(812d) HypCommonFunc(876d) nao-pon(1058d) 徒然日記(1470d)

ページコメント
 
The comments are owned by the poster. We aren't responsible for their content.

Track Back [ Track Back(1) ]
Track Back URL: http://xoops.hypweb.net/wiki/tb/5207
おひつじ座2006年08月28日の占い
Excerpt: ★恋愛★8:出会いやお誘いがありそう。準備は怠らずに。 ★マネー★9:コネがらみで儲け話があるかも。 ★仕事・勉強★9:ライバルに差をつけることが出来そう。
Weblog: i-Uranai.net:今日の占い
Tracked: August 28, 2006, 12:10 AM

このページのTopへ
ログイン
ユーザ名:

パスワード:

オートログイン

Basic 認証

Register now! | Lost Password?

mixiでログイン Yahoo!でログイン
アクティブメニュー
"ぽちっ"としてね☆ 
最新のページ
ブックマーク
Please log in to use it.
[Login]
新着トラックバック
サイト内 Wiki
☆ 検索 ☆



高度な検索(サイト内)
FireFox検索プラグイン
オンライン状況
合計 100 人がオンライン中 :-)
(Wiki [自由帳] : 20 人)

登録ユーザ: 0 & ゲスト: 100

もっと...
サイト情報
管理人

nao-pon
 

登録ユーザ数: 1400


現在ページのQRコード 
現在ページのQRコード
[携帯対応]
参照元情報
No trackback