mirror of
https://github.com/discourse/discourse.git
synced 2025-05-22 22:43:33 +08:00
SECURITY: Fix XSS on unsubscribed page.
This commit is contained in:
@ -110,6 +110,7 @@ class EmailController < ApplicationController
|
|||||||
|
|
||||||
def unsubscribed
|
def unsubscribed
|
||||||
@email = params[:email]
|
@email = params[:email]
|
||||||
|
raise Discourse::NotFound if !User.find_by_email(params[:email])
|
||||||
@topic = Topic.find_by(id: params[:topic_id].to_i) if params[:topic_id]
|
@topic = Topic.find_by(id: params[:topic_id].to_i) if params[:topic_id]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
13
spec/requests/email_controller_spec.rb
Normal file
13
spec/requests/email_controller_spec.rb
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe EmailController do
|
||||||
|
describe '#unsubscribed' do
|
||||||
|
describe 'when email is invalid' do
|
||||||
|
it 'should return the right response' do
|
||||||
|
get '/email/unsubscribed', params: { email: 'somerandomstring' }
|
||||||
|
|
||||||
|
expect(response.status).to eq(404)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Reference in New Issue
Block a user