Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Pukiwikiコメントスパム対策/電波時計でNTP
Search
Kenichiro MATOHARA
November 10, 2007
Technology
73
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Pukiwikiコメントスパム対策/電波時計でNTP
Kenichiro MATOHARA
November 10, 2007
More Decks by Kenichiro MATOHARA
See All by Kenichiro MATOHARA
軽量ウェブブラウザDilloのPlugin
matoken
0
18
今更LLMを触り始める(ローカルLLM bonsai)
matoken
0
110
念願のNDLOCR-Lite を試す
matoken
0
99
Nextcloud と互換性のある軽量WebDAV server のKaraDAV を試す
matoken
0
81
ActivityPub Server の snac その3
matoken
0
72
ActivityPub Server の snac その2
matoken
0
50
端末録画再生共有アプリ asciinema 3.0 リリース
matoken
0
89
アナウンス向けにミニマリスト向け ActivityPub Server の snac を利用
matoken
0
120
最近のNitterやX(old Twitter)関連 2025.09
matoken
0
96
Other Decks in Technology
See All in Technology
歴史から理解するクラウドインフラのしくみ
kizawa2020
0
180
大 AI 時代におけるC# の事情 ~ぶっちゃけトークを交えながら~
nenonaninu
1
460
なぜ、あなたのAPIは使われないのか? AX時代の設計原則、ガードレール、運用体制
yokawasa
1
250
2026年のソフトウェア開発を考える(2026/07版) / Agentic Software Engineering 2026-07 Findy Edition
twada
PRO
30
18k
クラウドを使う側から、作る側へ / 大吉祥寺.pm 2026前夜祭
fujiwara3
7
1.7k
SRENEXT_2026_Chairs__Talks_in_Tamachi.sre.pdf
srenext
1
160
キャリアLT会#3
beli68
2
280
Jitera Company Deck
jitera
0
650
変更し続けられるシステムをどう保つか — AI時代のSSoTという設計原則
kawauso
1
1.4k
システム監視を 「システムを監視するだけ」で 終わらせないために
seiud
0
140
A Bag-of-Documents Model for Query Specificity
dtunkelang
0
130
『モデル + ハーネス』で読み解く AIエージェント入門
oracle4engineer
PRO
2
210
Featured
See All Featured
Music & Morning Musume
bryan
47
7.3k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.8k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Evolving SEO for Evolving Search Engines
ryanjones
0
250
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.1k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.6k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
440
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.6k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Transcript
11月のオフな集まり(第64回) ~Pukiwiki コメントスパム対策/電波時計でNtp~ K.I.Matohara<
[email protected]
>
2 Matohara(まとはら)です。 • 最近腱鞘炎が悪化. キーボードを叩くのがつらいです. • MacOS 入れ替えのシステムアックアッ プディスクが壊れる. デスクリカバリソフトで対応.
3 腱鞘炎対策 • 今のところ効果は不明….
4 Pukiwiki コメントスパム対策 • Pukiwiki PHP ベースのWiki クローン • コメント機能がある
ここにspam が大量に. • 手で消していたが削除が追いつかなく. • コメントがつくと編集日時が更新されて しまう.
5 対策その1 ascii のみの投稿を禁止 • この頃の殆どのスパムは英語のスパムだ ったのでascii のみの投稿を禁止した. • ログをファイルに書き出すので後で確認
が可能. • これで9割以上のスパムが弾けるように なった.
6 書き換えたコード (pukiwiki/plugin/comment.inc.php) % diff ./comment.inc.php-org comment.inc.php 38a39,47 > if
(mb_detect_encoding($vars['msg']) == "ASCII" ){ // ascii のみの投稿禁止 > # ログを書き出して終了 > $fp = fopen("/home/maty/public_html/pukiwiki1/SPAM.log", 'a+'); > flock($fp, LOCK_EX); > fputs($fp,$vars['refer'].",".$vars['msg'].",".$vars['name'].",".date("Y-m- d:H:i:s")."\n"); > flock($fp, LOCK_UN); > fclose($fp); > return array('msg'=>'', 'body'=>''); > }
7 対策その2 ひらがなが含まれている投稿のみ許可 • 以下のようなascii 以外のspam が増えて きた. <a href="
http://eriqygyzam90.land.ru/ ">芻琲鉤髓矗 頌 髑褂 蓁鉐鴃琿�</a> [URL=http://eriqygyzam90.land.ru/]芻琲鉤髓矗 頌髑褂 蓁鉐鴃琿�[/URL] -- [[芻琲鉤髓矗 頌髑褂 蓁鉐 鴃琿�]] • 条件をascii のみからひらがなが含まれて いる投稿のみに変更.
8 書き換えたコード (pukiwiki/plugin/comment.inc.php) % diff ./comment.inc.php-org comment.inc.php 38a39,47 > if(!preg_match('/[ぁ-ん]+/',
$vars['msg'])){ // 平仮名を含まない投稿禁止 > # ログを書き出して終了 > $fp = fopen("/home/maty/public_html/pukiwiki1/SPAM.log", 'a+'); > flock($fp, LOCK_EX); > fputs($fp,$vars['refer'].",".$vars['msg'].",".$vars['name'].",".date("Y-m- d:H:i:s")."\n"); > flock($fp, LOCK_UN); > fclose($fp); > return array('msg'=>'', 'body'=>''); > } ※下線部以外対策その1と同じ.
9 対策その3 投稿元を確認 • ひらがなが含まれていない登校を拒否す るようにしても偶に漢字のコメントがす り抜けてくることがある. • スパムコメントの投稿元を確認してみる と,本来のフォームからでなく直接post
を投げてきている. • 本来のURL 以外からの投稿を禁止してみ た.
10 書き換えたコード (pukiwiki/plugin/comment.inc.php) % diff ./comment.inc.php-org comment.inc.php 38a39,47 > if(!ereg("^http://hpv.cc/~maty/pukiwiki",
$_SERVER["HTTP_REFERER"])){ // REFERER が違う場合投稿禁止 > # ログを書き出して終了 > $fp = fopen("/home/maty/public_html/pukiwiki1/SPAM.log", 'a+'); > flock($fp, LOCK_EX); > fputs($fp,$vars['refer'].",".$vars['msg'].",".$vars['name'].",".date("Y-m- d:H:i:s")."\n"); > flock($fp, LOCK_UN); > fclose($fp); > return array('msg'=>'', 'body'=>''); > } ※下線部以外対策その1,その2と同じ.
11 対策その4 フォームに加工 • 本来のURL 以外からの登校を禁止して殆 どのスパムが防げるようになったが,本 来のURL 経由でやってくるスパムがある .
• 投稿フォームを追加して,人間がチェッ クボックスをOn にしないと投稿を受け 付けないようにしてみた.
12 % diff ./comment.inc.php-org comment.inc.php 38a39,48 > if((strncmp("http://hpv.cc/~maty/pukiwiki", $_SERVER["HTTP_REFERER"], 28))
|| // REFERER が違 う場合投稿禁止 > (!$vars['nospam'])){ // nospam check が無い場合投稿禁止 > # ログを書き出して終了 > $fp = fopen("/home/maty/public_html/pukiwiki1/SPAM.log", 'a+'); > flock($fp, LOCK_EX); > fputs($fp,$vars['refer'].",".$vars['msg'].",".$vars['name'].",".date("Y-m-d:H:i:s")."\n"); > flock($fp, LOCK_UN); > fclose($fp); > return array('msg'=>'', 'body'=>''); > } 106a117 > $nametags .= '<input type="checkbox" name="nospam" value="nospam">spam 避けです check を 付けて下さい'; 書き換えたコード (pukiwiki/plugin/comment.inc.php) ※下線部以外対策その1,その2,その3と同じ.
13 今後の対策 • 投稿元URL を確認. • 投稿画面読み込み時間と投稿時間を比較 して一定時間以内に投稿されたものをは じく. •
実装がめんどくさそうなので実装してい ません….
14 電波時計でntp • 閉じたLAN 内で時計合わせをしたい. ->外のntp server には接続できない. • Client
はntpclient が動作する. • ntpd を1台用意してそのサーバは電波時 計で時刻合わせをするのはどうだろう?
15 電波時計C-dex JST2000 • 値段は\17,220から • Windows 用の手動同期Soft が付属. •
仕様が公開されていてUnix 向けのsoft も 複数存在する. • ntp が対応している!
16 JST2000 時計合わせソフト • jst2kctl(http://www.vanilla.co.jp/tech/jst2000/) 動作せず. • adj(http://www.ne.jp/asahi/tao/elis/jst2000/) make 失敗
• jst2k(http://homepage1.nifty.com/ryoji/jst2k/) ln -s /dev/ttyS0 /dev/cuaa0 で動くように
17 ntp の設定 • 当初,jst2k で電波時計と本体の時計合わ せを行うつもりだったが,ntp の設定中 にntp 自体がJST2000
に対応しているこ とに気づく. • soft はntp だけで良くなった. http://www.ntp.org/ ln -s /dev/ttyS0 /dev/jjy0 が必要.
18 # cat /etc/ntp.conf |grep -v ^#| grep -v ^$
server 127.127.40.0 prefer mode 2 # C-DEX JST2000 fudge 127.127.40.0 time1 0.070 server 127.127.1.1 # local clock fudge 127.127.1.1 stratum 6 logfile /var/log/ntp # alternate log file ntp 設定ファイル •server は127.127.40.0 mode 2 を指定. 127.127.40. でドライバrefclock_jjy.c を指定. mode 2 でC-DEX JST2000 として認識. •ip の末尾0 の部分はデバイス名に合わせる。 /dev/jjy1 なら127.127.40.1
19 もう少し安い電波時計 • 秋月電気にて電波時計キットが発売中. • PIC16F873使用 電波時計キット Ver.2 • ¥6400
です. • ntp.conf のサーバ部分は少し変更が必要 . server 127.127.40.0 prefer mode 1 • 開けた場所ならGPS という選択肢も.
20 ありがとうございました • matohara(まとはら) • http://hpv.cc/~maty/ •
[email protected]
• mixi:matoken(375316)
• twitter:matoken • Skype:matoken