mirror of
https://github.com/discourse/discourse.git
synced 2025-05-22 20:41:24 +08:00
SECURITY: Don't leak topic title in the redirect
This commit is contained in:
@ -70,6 +70,8 @@ class PostsController < ApplicationController
|
|||||||
user = User.find(params[:user_id].to_i)
|
user = User.find(params[:user_id].to_i)
|
||||||
request['u'] = user.username_lower if user
|
request['u'] = user.username_lower if user
|
||||||
end
|
end
|
||||||
|
|
||||||
|
guardian.ensure_can_see!(post)
|
||||||
redirect_to post.url
|
redirect_to post.url
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -821,4 +821,19 @@ describe PostsController do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "short link" do
|
||||||
|
let(:topic) { Fabricate(:topic) }
|
||||||
|
let(:post) { Fabricate(:post, topic: topic) }
|
||||||
|
|
||||||
|
it "redirects to the topic" do
|
||||||
|
xhr :get, :short_link, post_id: post.id
|
||||||
|
response.should be_redirect
|
||||||
|
end
|
||||||
|
|
||||||
|
it "returns a 403 when access is denied" do
|
||||||
|
Guardian.any_instance.stubs(:can_see?).returns(false)
|
||||||
|
xhr :get, :short_link, post_id: post.id
|
||||||
|
response.should be_forbidden
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
Reference in New Issue
Block a user