Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Pukiwikiコメントスパム対策/電波時計でNTP
Kenichiro MATOHARA
November 10, 2007
Technology
0
15
Pukiwikiコメントスパム対策/電波時計でNTP
Kenichiro MATOHARA
November 10, 2007
Tweet
Share
More Decks by Kenichiro MATOHARA
See All by Kenichiro MATOHARA
小さなLinux互換カーネルのTilck
matoken
0
5
機械翻訳をローカルマシンで( ArgosTranslate/LibreTranslate )
matoken
0
110
OpenAIのWhisper でオフライン文字 起こし(STT)
matoken
0
78
Wikipedia を Offlineで楽しむ
matoken
0
60
Intel CPUでもAIに画像生成してもらう
matoken
0
150
AndroidスマートフォンのTermuxでモバイル回線の速度を定期的に計測
matoken
0
77
XFSのbigtimeを少し試してみた(RHEL9 & ML8.4)
matoken
0
41
ターミナルワークスペースのZellij
matoken
0
190
XFSのbigtimeを少し試してみた
matoken
0
100
Other Decks in Technology
See All in Technology
Oktaの管理者権限を適切に移譲してみた
shimosyan
2
240
Akiba-dot-SaaS-ExtraHop
sakaitakeshi
1
100
LINE iOSエンジニアの日々 / LINE iOS Engineer Days
line_developers
PRO
1
130
UIFlowの2.0がやってきた! / ビジュアルプログラミングIoTLT vol.13
you
0
210
日本ディープラーニング協会主催 NeurIPS 2022 技術報告会講演資料
tdailab
0
920
OpenShiftでスポットVMを使おう.pdf
jpishikawa
1
130
JAWS-UG AI/ML #15 - SageMaker Experimentsで始める機械学習モデルの実験管理
masatakashiwagi
0
550
目指せCoverage100%! AutoScale環境におけるSavings Plans購入戦略 / JAWS-UG_SRE_Coverage
taishin
0
240
GitHub Codespaces が拡げる開発環境、いつでもどこでも Visual Studio Code で!
dzeyelid
0
150
Exploring MapStore Release 2022.02: improved 3DTiles support and more
simboss
PRO
0
160
JAWS-UG朝会_41_NakagawaAkihiro.pptx.pdf
anakagawa
2
620
PCL (Point Cloud Library)の基本となぜ点群処理か_2023年_第2版.pdf
cvmlexpertguide
0
120
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
51
2.9k
Into the Great Unknown - MozCon
thekraken
2
280
Typedesign – Prime Four
hannesfritz
34
1.5k
The Pragmatic Product Professional
lauravandoore
21
3.4k
Art Directing for the Web. Five minutes with CSS Template Areas
malarkey
196
9.8k
Become a Pro
speakerdeck
PRO
6
3.2k
Designing on Purpose - Digital PM Summit 2013
jponch
108
5.9k
Music & Morning Musume
bryan
36
4.6k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
217
21k
The Art of Programming - Codeland 2020
erikaheidi
35
11k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
38
3.6k
Unsuck your backbone
ammeep
659
56k
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