レ点腫瘍学ノート

pukiwikiカスタマイズ箇所/2019/search.inc.phpプラグインでGETメソッドを可能にする の履歴の現在との差分(No.1)


#author("2020-05-02T10:58:08+09:00;1970-01-01T18:00:00+09:00","default:tgoto","tgoto")
#author("2022-12-01T00:43:12+09:00;2020-05-02T10:58:08+09:00","default:tgoto","tgoto")
search.inc.phpプラグインのformはPOSTメソッドで検索ワードが送信されます。GETメソッドはデフォルトではPukiwiki 1.4.5の頃にDoS攻撃などに弱いという理由で廃止されています(https://pukiwiki.osdn.jp/dev/?BugTrack/796)。しかし個人運営のサイトではGETメソッドを許可していたからと言ってDoS攻撃に遭うリスクは極めて低いと思われることに加えて、もし本気で攻撃の意図を持っていればPukiwikiはGETメソッドをPOSTメソッドに変えたくらいでは堅牢さは保てない。そしてPOSTメソッドの弱点は、戻るボタンで元の検索結果一覧に戻れなかったりURLをリンクとして貼ることができないことだ。

そこでこのサイトではsearch.inc.phpプラグインでGETメソッドを用いることとした。PukiwikiのBugTrack/796にあるとおり、search.inc.phpの下記の1を0に書き換える。また一番下にあるformのpostもgetに置き換える。

> define('PLUGIN_SEARCH_DISABLE_GET_ACCESS', 1);

さらにこのsearch.inc.phpのformの中に下記の一文を追加してある(なくてもactionでcmd=searchに投げれば検索できそうなのに、なぜかこれがないとうまく行かない)。

> <input type="hidden" name="cmd" value="search" />

検索ボックスをPOSTメソッドからGETメソッドに変更すればAMPページでも検索ボックスを設置しやすくなるが、これは行っていない。なぜかというと、AMPページでformを使用可能にするためのamp-formスクリプトを読み込ませると検索ボックスだけでなくPukiwikiの編集ページなど全ての文字入力窓を改変しないとformが作動しないから。これは大変すぎるのでamp-formは入れず、検索ボックスも検索ページだけに表示するようにしている(このページはAMPエラーが出るが、放置している)。
#pcomment