Sha256: de56ffa65b0676285ad58068fe3aae9c413d62c44d74c2f23729fe5b27678359

Contents?: true

Size: 978 Bytes

Versions: 23

Compression:

Stored size: 978 Bytes

Contents

require 'brakeman/checks/base_check'

class Brakeman::CheckSessionManipulation < Brakeman::BaseCheck
  Brakeman::Checks.add self

  @description = "Check for user input in session keys"

  def run_check
    tracker.find_call(:method => :[]=, :target => :session).each do |result|
      process_result result
    end
  end

  def process_result result
    return if duplicate? result or result[:call].original_line
    add_result result

    index = result[:call].first_arg

    if input = has_immediate_user_input?(index)
      if params? index
        confidence = CONFIDENCE[:high]
      else
        confidence = CONFIDENCE[:med]
      end

      warn :result => result,
        :warning_type => "Session Manipulation",
        :warning_code => :session_key_manipulation,
        :message => "#{friendly_type_of(input).capitalize} used as key in session hash",
        :code => result[:call],
        :user_input => input,
        :confidence => confidence
    end
  end
end

Version data entries

23 entries across 23 versions & 3 rubygems

Version Path
brakeman-3.3.2 lib/brakeman/checks/check_session_manipulation.rb
brakeman-lib-3.3.2 lib/brakeman/checks/check_session_manipulation.rb
brakeman-min-3.3.2 lib/brakeman/checks/check_session_manipulation.rb
brakeman-3.3.1 lib/brakeman/checks/check_session_manipulation.rb
brakeman-min-3.3.1 lib/brakeman/checks/check_session_manipulation.rb
brakeman-lib-3.3.1 lib/brakeman/checks/check_session_manipulation.rb
brakeman-3.3.0 lib/brakeman/checks/check_session_manipulation.rb
brakeman-min-3.3.0 lib/brakeman/checks/check_session_manipulation.rb
brakeman-3.2.1 lib/brakeman/checks/check_session_manipulation.rb
brakeman-min-3.2.1 lib/brakeman/checks/check_session_manipulation.rb
brakeman-3.2.0 lib/brakeman/checks/check_session_manipulation.rb
brakeman-min-3.2.0 lib/brakeman/checks/check_session_manipulation.rb
brakeman-3.2.0.pre1 lib/brakeman/checks/check_session_manipulation.rb
brakeman-min-3.2.0.pre1 lib/brakeman/checks/check_session_manipulation.rb
brakeman-min-3.1.5.pre1 lib/brakeman/checks/check_session_manipulation.rb
brakeman-3.1.5 lib/brakeman/checks/check_session_manipulation.rb
brakeman-min-3.1.5 lib/brakeman/checks/check_session_manipulation.rb
brakeman-3.1.4 lib/brakeman/checks/check_session_manipulation.rb
brakeman-min-3.1.4 lib/brakeman/checks/check_session_manipulation.rb
brakeman-3.1.3 lib/brakeman/checks/check_session_manipulation.rb