#author("2023-10-05T21:49:20+09:00","default:admin","admin") #author("2023-10-05T21:50:36+09:00","default:admin","admin") * PukiWikiにTurnstileを導入してみた [#title] #splitbody{{ LEFT: &tag(PukiWiki,プラグイン,Turnstile,スパム対策,解説,セキュリティ); #split RIGHT:&size(13){更新日: 2023-10-01 (日)}; }} #ecache{{{ #bcontents PukiWikiではこの頃、ボットによるスパムが目立つため、簡易的にCloudFlare Turnstileでスパム対策をしてみる。 ここではM.T.氏のTurnstileプラグインを使う。 以下のページのインストール方法に従って導入する。 #blink(https://github.com/ikamonster/pukiwiki-turnstile) ** Turnstileとは [#p1d25793] Turnstileは、CloudFlareが開発するCaptchaの代用となる無料の認証である。 ボットと人間を区別するものであり、主にボットによるスパム対策をするために使われる。 ** PukiWikiへの導入 [#s8f90cc5] PukiWiki用Turnstileプラグインの配布ページから''turnstile.inc.php''を手に入れる。 - [[ikamonster/pukiwiki-turnstile - GitHub>https://github.com/ikamonster/pukiwiki-turnstile]] #img(https://i.imgur.com/IsLHEwD.png,c) 上記の画像で赤く囲った場所「plugin」をクリックする。 #img(https://i.imgur.com/qqt2rA3.png,c) 「turnstile.inc.php」をクリックする。 #img(blob:https://imgur.com/58fbe741-e2dc-4e41-80a3-9c7ec93a7547,c) &img(https://i.imgur.com/GfdwKRI.png);ダウンロードボタンをクリックする。 ダウンロードしたファイルをPukiWiki直下のpluginフォルダに入れる。 CloudFlareへログインする (アカウントを持っていないのであれば作る) 左のメニューから「''Turnstile''」を選択する。 #img(https://i.imgur.com/jEn9gdf.png,c) &img(https://i.imgur.com/rfZAaPT.png);をクリックする。 「サイト名」、「ドメイン」の入力欄を埋めて''ウィジェット モード''(Widget Type)は、「不可視」(Invisible)を選ぶ。 #img(https://i.imgur.com/EmbyWTa.png,c) ここで選択を間違えると動作しないので注意、間違えても設定から変更すること。 ''PLUGIN_TURNSTILE_SITE_KEY''と''PLUGIN_TURNSTILE_SECRET_KEY''にそれぞれ''サイト キー''と''シークレット キー''を入れる。 #img(https://i.imgur.com/QOfAPkf.png,c) 必要に応じて別の定数も変更できる。 スキンファイルである''pukiwiki.skin.php''を編集する。(デフォルトではskin/pukiwiki.skin.php) 別のスキンを入れているのであれば基本的に「skin/〇〇/pukiwiki.skin.php」となる。 「</body>」直前に以下のコードを挿入する。 <?php if (exist_plugin_convert('turnstile')) echo do_plugin_convert('turnstile'); // Turnstile plugin ?> #img(https://i.imgur.com/OWzdBCM.png,c) #gcode(php){{ </p> </div> +<?php if (exist_plugin_convert('turnstile')) echo do_plugin_convert('turnstile'); // Turnstile plugin ?> </body> </html> }} 次にPukiWiki直下のlibフォルダに入っているplugin.phpを編集する。 「$retvar = call_user_func('plugin_' . $name . '_action');」の前に以下のコードを挿入する。 if (exist_plugin_action('turnstile') && ($__v = call_user_func_array('plugin_turnstile_action', array($name))['body'])) die_message($__v); // Turnstile plugin #img(https://i.imgur.com/G52cngm.png,c) #gcode(php){{ if (do_plugin_init($name) === FALSE) { die_message('Plugin init failed: ' . htmlsc($name)); } + if (exist_plugin_action('turnstile') && ($__v = call_user_func_array('plugin_turnstile_action', array($name))['body'])) die_message($__v); // Turnstile plugin $retvar = call_user_func('plugin_' . $name . '_action'); // Insert a hidden field, supports idenrtifying text enconding }} これで導入は完了だ。 }}} ** コメント [#e87d1ade] #pctrlcmt
[もっと見る]
[もっと見る]