SECURITY: Prevent guest users from accessing secure uploads when login required

This commit is contained in:
Ted Johansson 2024-01-08 09:53:32 -07:00 committed by Isaac Janzen
parent f213ba7c1f
commit edb2630131
No known key found for this signature in database
GPG Key ID: D75AF9C21FD8EBCD
2 changed files with 15 additions and 0 deletions

View File

@ -168,6 +168,7 @@ class UploadsController < ApplicationController
def handle_secure_upload_request(upload, path_with_ext = nil)
if upload.access_control_post_id.present?
raise Discourse::InvalidAccess if current_user.nil? && SiteSetting.login_required
raise Discourse::InvalidAccess if !guardian.can_see?(upload.access_control_post)
else
return render_404 if current_user.nil?

View File

@ -581,6 +581,20 @@ RSpec.describe UploadsController do
end
end
context "when login is required and user is not signed in" do
let(:post) { Fabricate(:post) }
before do
SiteSetting.login_required = true
upload.update(access_control_post_id: post.id)
end
it "returns a 403" do
get secure_url
expect(response.status).to eq(403)
end
end
context "when the prevent_anons_from_downloading_files setting is enabled and the user is anon" do
before { SiteSetting.prevent_anons_from_downloading_files = true }