diff --git a/app/controllers/bbb_controller.rb b/app/controllers/bbb_controller.rb index dc2350e1..344c75d8 100644 --- a/app/controllers/bbb_controller.rb +++ b/app/controllers/bbb_controller.rb @@ -270,6 +270,7 @@ class BbbController < ApplicationController def validate_checksum secret = ENV['BIGBLUEBUTTON_SECRET'] checksum = params["checksum"] + return false unless checksum # Decode and break the body into parts. parts = URI.decode_www_form(read_body(request)) @@ -279,7 +280,7 @@ class BbbController < ApplicationController # Manually remove the space between the two elements. converted_data[converted_data.rindex("timestamp") - 2] = '' - + callback_url = uri_remove_param(request.original_url, "checksum") checksum_str = "#{callback_url}#{converted_data}#{secret}" diff --git a/test/controllers/bbb_controller_test.rb b/test/controllers/bbb_controller_test.rb index 44cc5363..c8f860ef 100644 --- a/test/controllers/bbb_controller_test.rb +++ b/test/controllers/bbb_controller_test.rb @@ -176,7 +176,7 @@ class BbbControllerTest < ActionController::TestCase "meeting_id": "f344d42cc5ea2fbb7fe64edabce42dae5dc1c0c5-1487709353538"}}, "timestamp": 1488557092} - request.env['RAW_POST_DATA'] = data.to_json + request.env['RAW_POST_DATA'] = URI.encode_www_form(data) Digest::SHA1.hexdigest( "#{data[:event][:payload][:metadata][:'gl-webhooks-callback-url']}#{data.to_json}#{secret}") end