Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Pukiwikiコメントスパム対策/電波時計でNTP
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Kenichiro MATOHARA
November 10, 2007
Technology
76
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
ターミナルグラフィックウェブブラウザ!?
matoken
0
38
軽量ウェブブラウザDilloのPlugin
matoken
0
50
今更LLMを触り始める(ローカルLLM bonsai)
matoken
0
160
念願のNDLOCR-Lite を試す
matoken
0
120
Nextcloud と互換性のある軽量WebDAV server のKaraDAV を試す
matoken
0
130
ActivityPub Server の snac その3
matoken
0
88
ActivityPub Server の snac その2
matoken
0
62
端末録画再生共有アプリ asciinema 3.0 リリース
matoken
0
100
アナウンス向けにミニマリスト向け ActivityPub Server の snac を利用
matoken
0
150
Other Decks in Technology
See All in Technology
データ_AIの事業の勝敗をわけるもの
nek0128
0
360
AIエージェントの自己改善をどう設計するか / How to Design Self-Improvement for AI Agents
22mi
23
15k
銀行勘定系システムにおける開発プロセス刷新×AIによる環境モダナイゼーション / Development Process Transformation and AI-Driven Environment Modernization
muit
0
2.2k
2026-09-11 【Snowflake World Tour Tokyo 2026】Snowflakeを起点に、AI Agentが自律稼働し続ける未来へ / Driving AI Agents with Snowflake
civitaspo
0
500
AIによるクリエイティブ生成を行う上での試行錯誤
plaidtech
PRO
0
150
現場で役立つ技術負債の効果的な返済方法
masuda220
PRO
8
4.1k
Slack上でインフラをトラブルシュートする! Agentic Platform Engineeringの第一歩
teru0x1
4
1.7k
Spring BootからQuarkusへの移行
tatsuya1bm
2
120
iOSDC Japan 2026 day1 TrackC 10:50
feedtailor
1
160
GoにおけるFFIのこれまでとこれから
goccy
5
3.4k
CLIライブラリ開発を支える技術
htnabe
0
110
beyond jj: config & tools ecosystem
indirect
0
430
Featured
See All Featured
The untapped power of vector embeddings
frankvandijk
2
1.9k
How GitHub (no longer) Works
holman
316
150k
From π to Pie charts
rasagy
1
370
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
GraphQLとの向き合い方2022年版
quramy
50
15k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
800
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.6k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
A designer walks into a library…
pauljervisheath
211
25k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Embracing the Ebb and Flow
colly
88
5.2k
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