brakeman 0.6.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -16,11 +16,13 @@ class CheckCrossSiteScripting < BaseCheck
16
16
 
17
17
  #Ignore these methods and their arguments.
18
18
  #It is assumed they will take care of escaping their output.
19
- IGNORE_METHODS = Set.new([:h, :escapeHTML, :link_to, :text_field_tag, :hidden_field_tag,
20
- :image_tag, :select, :submit_tag, :hidden_field, :url_encode,
21
- :radio_button, :will_paginate, :button_to, :url_for, :mail_to,
22
- :fields_for, :label, :text_area, :text_field, :hidden_field, :check_box,
23
- :field_field])
19
+ IGNORE_METHODS = Set.new([:button_to, :check_box, :escapeHTML, :escape_once,
20
+ :field_field, :fields_for, :h, :hidden_field,
21
+ :hidden_field, :hidden_field_tag, :image_tag, :label,
22
+ :link_to, :mail_to, :radio_button, :select,
23
+ :submit_tag, :text_area, :text_field,
24
+ :text_field_tag, :url_encode, :url_for,
25
+ :will_paginate] )
24
26
 
25
27
  #Model methods which are known to be harmless
26
28
  IGNORE_MODEL_METHODS = Set.new([:average, :count, :maximum, :minimum, :sum])
@@ -150,6 +152,8 @@ class CheckCrossSiteScripting < BaseCheck
150
152
  message = "Unescaped model attribute"
151
153
  elsif @matched == :params
152
154
  message = "Unescaped parameter value"
155
+ elsif @matched == :cookies
156
+ message = "Unescaped cookie value"
153
157
  end
154
158
 
155
159
  if message and not duplicate? exp
@@ -197,8 +201,9 @@ class CheckCrossSiteScripting < BaseCheck
197
201
  exp[0] = :ignore
198
202
  @matched = false
199
203
  elsif sexp? exp[1] and model_name? exp[1][1]
200
-
201
204
  @matched = :model
205
+ elsif cookies? exp or cookies? target or COOKIES == exp or COOKIES == target
206
+ @matched = :cookies
202
207
  elsif @inspect_arguments and (ALL_PARAMETERS.include?(exp) or params? exp)
203
208
  @matched = :params
204
209
  elsif @inspect_arguments
@@ -27,10 +27,9 @@ class CheckSessionSettings < BaseCheck
27
27
  def process_attrasgn exp
28
28
  if not OPTIONS[:rails3] and exp[1] == SessionSettings and exp[2] == :session=
29
29
  check_for_issues exp[3][1], "#{OPTIONS[:app_path]}/config/initializers/session_store.rb"
30
- exp
31
- else
32
- super
33
30
  end
31
+
32
+ exp
34
33
  end
35
34
 
36
35
  #Looks for Rails3::Application.config.session_store :cookie_store, { ... }
@@ -38,10 +37,9 @@ class CheckSessionSettings < BaseCheck
38
37
  def process_call exp
39
38
  if OPTIONS[:rails3] and exp[1] == SessionSettings and exp[2] == :session_store
40
39
  check_for_issues exp[3][2], "#{OPTIONS[:app_path]}/config/initializers/session_store.rb"
41
- exp
42
- else
43
- super
44
40
  end
41
+
42
+ exp
45
43
  end
46
44
 
47
45
  private
@@ -39,12 +39,14 @@ class CheckValidationRegex < BaseCheck
39
39
  return unless regexp? value
40
40
 
41
41
  regex = value[1].inspect
42
- if regex =~ /[^\A].*[^\z]\/(m|i|x|n|e|u|s|o)*\z/
43
- warn :model => @current_model,
44
- :warning_type => "Format Validation",
45
- :message => "Insufficient validation for '#{get_name validator}' using #{value[1].inspect}. Use \\A and \\z as anchors",
46
- :line => value.line,
47
- :confidence => CONFIDENCE[:high]
42
+ if regex =~ /^\/(.{2}).*(.{2})\/(m|i|x|n|e|u|s|o)*\z/
43
+ if $1 != "\\A" or ($2 != "\\Z" and $2 != "\\z")
44
+ warn :model => @current_model,
45
+ :warning_type => "Format Validation",
46
+ :message => "Insufficient validation for '#{get_name validator}' using #{value[1].inspect}. Use \\A and \\z as anchors",
47
+ :line => value.line,
48
+ :confidence => CONFIDENCE[:high]
49
+ end
48
50
  end
49
51
  end
50
52
 
data/lib/version.rb CHANGED
@@ -1 +1 @@
1
- Version = "0.6.0"
1
+ Version = "0.6.1"
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 6
8
- - 0
9
- version: 0.6.0
8
+ - 1
9
+ version: 0.6.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Justin Collins
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-07-20 00:00:00 -07:00
17
+ date: 2011-07-29 00:00:00 -07:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency