#author("2022-04-13T12:10:57+09:00","","") #author("2022-04-13T12:15:08+09:00","","") **[[質問箱/5450]] [#bcf4789a] |RIGHT:100|LEFT:410|c |~カテゴリ|セキュリティ・スパム・悪戯対策| |~サマリ|refプラグインが閲覧制限を考慮していない| |~バージョン|1.5.4| |~投稿者|[[N]]| |~状態|質問| |~状態|完了| |~投稿日|&new{2022-04-12 (火) 18:12:22};| ***質問 [#k5361db5] ''再現手順1'' + 閲覧制限をかけた任意のページに、画像ファイルを添付してrefプラグインで画像を表示させる。 + 上記のページにブラウザでアクセスし、表示されている画像を右クリックして「画像のリンク(アドレス)をコピー」する。 + プライベートモードでブラウザを起動してコピーした画像のURLにアクセスする。 ''期待する結果1'' 画像は表示されず、ログイン画面に遷移する。 ''実際の結果1'' 画像が表示されてしまう。 ''再現手順2'' + 閲覧制限をかけた任意のページに、画像ファイルを添付する。 + 閲覧制限をかけていない任意のページに、refプラグインで上記の閲覧制限をかけたページの画像を表示させる。 + プライベートモードでブラウザを起動して閲覧制限をかけていないページにアクセスする。 ''期待する結果2'' 画像は表示されない。 ''実際の結果2'' 画像が表示されてしまう。 ''問題点'' ページ名と画像ファイル名さえ分かってしまうと、閲覧制限のかかったページのコンテンツ(の一部)に誰でもアクセスできてしまう。 ''調べたこと'' [[質問箱]]を「ref リンク」で検索しましたが、類似の質問は見つけられませんでした。~ [[Q&A]]配下ページと[[FAQ]]ページを「ref」で文字列検索しましたが、有用な情報は見つけられませんでした。 refプラグインで画像を表示すると、その画像は「src="./?plugin=ref&page=URLエンコードされたページ名&src=画像ファイル名"というimgタグ」としてHTML出力されるようです。~ [[refプラグインのマニュアル>PukiWiki/1.4/Manual/Plugin/O-R#content_1_10]]によるとコマンド型には分類されていませんが、実際はコマンド型として使用可能なようです。 一方、当該ページの「添付一覧」で表示される画像ファイルのリンク文字列は「https://.../?plugin=attach&pcmd=open&file=画像ファイル名&refer=URLエンコードされたページ名」となっており、こちらはプライベートモードのブラウザでアクセスするとログイン画面に遷移しました。 このことから、attachプラグインでは行われているであろう、閲覧制限に関するチェックがrefプラグインでは行われていないのかな、と考えて、ref.inc.phpとattach.inc.phpを見比べた所、attach.inc.phpにはcheck_readableという関数がありました。~ ただ、check_readable関数をref.inc.phpに付け加えることで期待する動作にできるのか、また、どの様な引数を与えてどこに付け加えたらよいのか分かりませんでした。 ''聞きたいこと'' + 閲覧制限をかけたページに添付した画像ファイルへの、refプラグインのコマンド型呼び出しによるアクセス時に、ログイン画面に遷移させられないでしょうか。 + 閲覧制限をかけたページに添付した画像ファイルを、別ページからのrefプラグインによる参照した際に、画像を非表示にできないでしょうか。 ***回答 [#f7d42cc2] - 本当ですね。417行目に check_readable($page); を追加してください -- [[umorigu]] &new{2022-04-12 (火) 22:54:29}; - ありがとうございます。お教えいただいた方法で、コマンド型呼び出しはログイン画面に遷移、インライン・ブロック型呼び出しは画像を非表示にできました。 -- [[N]] &new{2022-04-13 (水) 12:10:57}; #comment