こんにちは、匿名ユーザーの検索機能を無効にするために、ファイルにいくつかの変更を加えてアプリを再構築したいと考えています。(CSSだけでなく)
誰か、from: と to: の部分のフックの構文に関するドキュメントを提供してもらえませんか?
replace
filename:"/var/www/discourse/app/controllers/search_controller.rb"
from:
to:
search_controller.rb で、12行目を
def show
から
def show
if current_user.present?
に置き換えたいだけです。
そして、76行目を
format.json { render_json_dump(serializer) }
から
format.json { render_json_dump(serializer) }
end
に置き換えたいです。
Falco
(Falco)
2
それを実現するための隠されたサイト設定があります:
rate_limit_search_anon_global_per_minute
「いいね!」 1
Michael12
(Michael Phillips)
3
ご指摘ありがとうございます。確認のため、その非表示サイト設定の名前は何ですか?また、それは匿名ユーザーの検索を完全に無効にするのですか、それとも結果を非表示にするだけですか?コントローラーレベルでアクセスをブロックする方法を探しているので、その設定だけで十分なのか、それともカスタムコードが必要なのか疑問に思っています。
変数を提供していただきありがとうございます。このドキュメントで機能させることができました。
env:
DISCOURSE_RATE_LIMIT_SEARCH_ANON_GLOBAL_PER_MINUTE: 0
上記のように app.yml を変更し、保存してから ./launcher restart app を実行しました(再構築は不要でした)。
これで /search ページにアクセスできなくなりました。素晴らしいです。
フロントエンドの検索ボタンをクリックすると、「この操作を繰り返し実行しすぎました」というメッセージがすぐに表示されます。素晴らしいです。
検索ボタンを非表示にすることもできます。
.anon #search-button {
display: none !important;
}
しかし、問題は、これが徹底的かどうかです。誰かが単純なセッションCookieを作成して、接続しているように見せかけ、検索を通じてサイトのコンテンツにアクセスできるのでしょうか?
より徹底的ですが、不完全な解決策:
ファイルは /var/www/discourse/app/controllers/search_controller.rb です。
変更点は、「def show」の後に「if current_user.present?」を追加し、条件の最後に「end」を追加することです。
しかし、再起動後も永続化させることができなかったため、app.yml の after_code replace: feature フックを使用して永続化する方法について、どなたか教えていただけると幸いです。
Falco
(Falco)
5
検索を行うためにログインするということですか?
OPで指定したように、あなたは望んでいます:
そして、この設定がやることです。
もちろん、ログインしているユーザーには影響しません。
ログインしていないユーザーが、ログインしているかのように見せかけるためにセッションクッキーを作成するという意味です。ただ、currentUser関数がセッションキーをチェックしていると推測しているので、少し深読みしすぎているのかもしれません。
Falco
(Falco)
7

それはセキュリティ上の問題になります。もしそれが達成できるなら、HackerOne に報告してください。

「いいね!」 1
「それはセキュリティ上の問題になります。もしそれが達成できるなら、HackerOneに報告するようにしてください。」
いいえ、Discourseは初めてなので、引用もまともにできません
ただ、Discourseのエンジニアが周りにいないかなと思って聞いてみただけです
とにかく、Falcoさんのおかげでこのスレッドの解決策を見つけることができました。
「いいね!」 1
DISCOURSE_RATE_LIMIT_SEARCH_ANON_GLOBAL_PER_MINUTE: 0
ただし、コントローラーレベルでこれを試すことを躊躇しないでください。
/var/www/discourse/app/controllers/search_controller.rb
変更点:「def show」の後に「if current_user.present?」を追加し、条件の最後に「end」を追加します。
system
(system)
クローズされました:
10
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.