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
Kenichiro MATOHARA
November 10, 2007
Technology
80
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
Debian trixie Gnome環境で時計がずれている?
matoken
0
14
200kbps使い放題のロケットモバイル神プランを試し中
matoken
0
20
ファイル共有ソフトウェアのOpenCloud 8.0.0を試す
matoken
0
16
ターミナルグラフィックウェブブラウザ!?
matoken
0
57
軽量ウェブブラウザDilloのPlugin
matoken
0
57
今更LLMを触り始める(ローカルLLM bonsai)
matoken
0
230
念願のNDLOCR-Lite を試す
matoken
0
140
Nextcloud と互換性のある軽量WebDAV server のKaraDAV を試す
matoken
0
150
ActivityPub Server の snac その3
matoken
0
96
Other Decks in Technology
See All in Technology
Temporal 最高!でも改めて「日付」について調べたら人類の負債すぎる件
riyaamemiya
0
150
Metadata - Section 1: HTML Basics
mohab1
0
120
AI コーディングと人間の認知スループット / CTO Night & Day 2026 Morning Session / AI Coding and Human Cognitive Throughput
prog893
4
1.1k
AI × アーキテクト 第1・2章|生成AIの課題とアーキテクトの素養
daidaidai
0
170
分析の民主化を支えるメタデータ整備の実践
kakehashi
PRO
4
1.4k
V8のArray.prototype.flatを最大約20倍速くするまでと、巨大OSSへの大規模コミットの道のり
riyaamemiya
0
290
OptunaHub: ブラックボックス最適化のためのプラットフォーム
pfn
PRO
0
140
事業成長とデータ活用を止めないためのマネジメントへ挑戦
hiracky16
0
390
AI駆動開発の時代になったのでトヨタ生産方式から見直す
terurou
7
6k
USB PDを使ってスマホを労わりたい
raspython3
0
180
スキマバイトという雇用形態は存在しないので、雇用期間1日のアルバイト契約を事業者とワーカーが結ぶ手続きを支えるのがタイミーなんです
akitoshiga
0
200
Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
1
580
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Optimising Largest Contentful Paint
csswizardry
37
4k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
43k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
450
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
410
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
480
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
Making the Leap to Tech Lead
cromwellryan
135
10k
The agentic SEO stack - context over prompts
schlessera
0
970
How to Think Like a Performance Engineer
csswizardry
28
2.9k
Documentation Writing (for coders)
carmenintech
77
5.6k
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