validate expanded path matches public_dir when serving static files

This commit is contained in:
Craig Ingram 2021-02-17 17:43:15 -05:00
parent ed2add3785
commit 462c3ca1db
2 changed files with 2 additions and 0 deletions

View File

@ -1090,6 +1090,7 @@ module Sinatra
return unless valid_path?(path)
path = File.expand_path(path)
return unless path.start_with?(File.expand_path(public_dir) + '/')
return unless File.file?(path)
env['sinatra.static_file'] = path

View File

@ -97,6 +97,7 @@ class StaticTest < Minitest::Test
mock_app do
set :static, true
set :public_folder, __dir__ + '/data'
disable :protection
end
get "/../#{File.basename(__FILE__)}"
assert not_found?