File tree Expand file tree Collapse file tree 8 files changed +130
-24
lines changed Expand file tree Collapse file tree 8 files changed +130
-24
lines changed Original file line number Diff line number Diff line change 1
1
module Raven
2
2
class Processor ::Cookies < Processor
3
3
def process ( data )
4
- if data [ :request ]
5
- # Remove possibly sensitive cookies
6
- data [ :request ] [ :cookies ] = STRING_MASK if data [ :request ] [ :cookies ]
7
-
8
- if data [ :request ] [ :headers ] && data [ :request ] [ :headers ] [ "Cookie" ]
9
- data [ :request ] [ :headers ] [ "Cookie" ] = STRING_MASK
10
- end
11
- end
4
+ process_if_symbol_keys ( data ) if data [ :request ]
5
+ process_if_string_keys ( data ) if data [ "request" ]
12
6
13
7
data
14
8
end
9
+
10
+ private
11
+
12
+ def process_if_symbol_keys ( data )
13
+ data [ :request ] [ :cookies ] = STRING_MASK if data [ :request ] [ :cookies ]
14
+
15
+ return unless data [ :request ] [ :headers ] && data [ :request ] [ :headers ] [ "Cookie" ]
16
+ data [ :request ] [ :headers ] [ "Cookie" ] = STRING_MASK
17
+ end
18
+
19
+ def process_if_string_keys ( data )
20
+ data [ "request" ] [ "cookies" ] = STRING_MASK if data [ "request" ] [ "cookies" ]
21
+
22
+ return unless data [ "request" ] [ "headers" ] && data [ "request" ] [ "headers" ] [ "Cookie" ]
23
+ data [ "request" ] [ "headers" ] [ "Cookie" ] = STRING_MASK
24
+ end
15
25
end
16
26
end
Original file line number Diff line number Diff line change @@ -10,17 +10,30 @@ def initialize(client)
10
10
end
11
11
12
12
def process ( data )
13
- if data [ :request ] && data [ :request ] [ :headers ]
14
- data [ :request ] [ :headers ] . keys . select { |k | fields_re . match ( k . to_s ) } . each do |k |
15
- data [ :request ] [ :headers ] [ k ] = STRING_MASK
16
- end
17
- end
13
+ process_if_symbol_keys ( data ) if data [ :request ]
14
+ process_if_string_keys ( data ) if data [ "request" ]
18
15
19
16
data
20
17
end
21
18
22
19
private
23
20
21
+ def process_if_symbol_keys ( data )
22
+ return unless data [ :request ] [ :headers ]
23
+
24
+ data [ :request ] [ :headers ] . keys . select { |k | fields_re . match ( k . to_s ) } . each do |k |
25
+ data [ :request ] [ :headers ] [ k ] = STRING_MASK
26
+ end
27
+ end
28
+
29
+ def process_if_string_keys ( data )
30
+ return unless data [ "request" ] [ "headers" ]
31
+
32
+ data [ "request" ] [ "headers" ] . keys . select { |k | fields_re . match ( k ) } . each do |k |
33
+ data [ "request" ] [ "headers" ] [ k ] = STRING_MASK
34
+ end
35
+ end
36
+
24
37
def matches_regexes? ( k )
25
38
fields_re . match ( k . to_s )
26
39
end
Original file line number Diff line number Diff line change 1
1
module Raven
2
2
class Processor ::PostData < Processor
3
3
def process ( data )
4
- if data [ :request ] && data [ :request ] [ :method ] == "POST"
5
- data [ :request ] [ :data ] = STRING_MASK # Remove possibly sensitive POST data
6
- end
4
+ process_if_symbol_keys ( data ) if data [ :request ]
5
+ process_if_string_keys ( data ) if data [ "request" ]
7
6
8
7
data
9
8
end
9
+
10
+ private
11
+
12
+ def process_if_symbol_keys ( data )
13
+ return unless data [ :request ] [ :method ] == "POST"
14
+ data [ :request ] [ :data ] = STRING_MASK
15
+ end
16
+
17
+ def process_if_string_keys ( data )
18
+ return unless data [ "request" ] [ "method" ] == "POST"
19
+ data [ "request" ] [ "data" ] = STRING_MASK
20
+ end
10
21
end
11
22
end
Original file line number Diff line number Diff line change 1
1
module Raven
2
2
class Processor ::RemoveStacktrace < Processor
3
- def process ( value )
4
- if value [ :exception ]
5
- value [ :exception ] [ :values ] . map do |single_exception |
6
- single_exception . delete ( :stacktrace ) if single_exception [ :stacktrace ]
7
- end
3
+ def process ( data )
4
+ process_if_symbol_keys ( data ) if data [ :exception ]
5
+ process_if_string_keys ( data ) if data [ "exception" ]
6
+
7
+ data
8
+ end
9
+
10
+ private
11
+
12
+ def process_if_symbol_keys ( data )
13
+ data [ :exception ] [ :values ] . map do |single_exception |
14
+ single_exception . delete ( :stacktrace ) if single_exception [ :stacktrace ]
8
15
end
16
+ end
9
17
10
- value
18
+ def process_if_string_keys ( data )
19
+ data [ "exception" ] [ "values" ] . map do |single_exception |
20
+ single_exception . delete ( "stacktrace" ) if single_exception [ "stacktrace" ]
21
+ end
11
22
end
12
23
end
13
24
end
Original file line number Diff line number Diff line change 9
9
end
10
10
11
11
it 'should remove cookies' do
12
- data = {
12
+ test_data = {
13
13
:request => {
14
14
:headers => {
15
15
"Cookie" => "_sentry-testapp_session=SlRKVnNha2Z" ,
20
20
}
21
21
}
22
22
23
- result = @processor . process ( data )
23
+ result = @processor . process ( test_data )
24
24
25
25
expect ( result [ :request ] [ :cookies ] ) . to eq ( "********" )
26
26
expect ( result [ :request ] [ :headers ] [ "Cookie" ] ) . to eq ( "********" )
27
27
expect ( result [ :request ] [ :some_other_data ] ) . to eq ( "still_here" )
28
28
expect ( result [ :request ] [ :headers ] [ "AnotherHeader" ] ) . to eq ( "still_here" )
29
29
end
30
+
31
+ it 'should remove cookies even if keys are strings' do
32
+ test_data = {
33
+ "request" => {
34
+ "headers" => {
35
+ "Cookie" => "_sentry-testapp_session=SlRKVnNha2Z" ,
36
+ "AnotherHeader" => "still_here"
37
+ } ,
38
+ "cookies" => "_sentry-testapp_session=SlRKVnNha2Z" ,
39
+ "some_other_data" => "still_here"
40
+ }
41
+ }
42
+
43
+ result = @processor . process ( test_data )
44
+
45
+ expect ( result [ "request" ] [ "cookies" ] ) . to eq ( "********" )
46
+ expect ( result [ "request" ] [ "headers" ] [ "Cookie" ] ) . to eq ( "********" )
47
+ expect ( result [ "request" ] [ "some_other_data" ] ) . to eq ( "still_here" )
48
+ expect ( result [ "request" ] [ "headers" ] [ "AnotherHeader" ] ) . to eq ( "still_here" )
49
+ end
30
50
end
Original file line number Diff line number Diff line change 38
38
expect ( result [ :request ] [ :headers ] [ "User-Defined-Header" ] ) . to eq ( "********" )
39
39
expect ( result [ :request ] [ :headers ] [ "AnotherHeader" ] ) . to eq ( "still_here" )
40
40
end
41
+
42
+ it "should remove headers even if the keys are strings" do
43
+ data = {
44
+ "request" => {
45
+ "headers" => {
46
+ "Authorization" => "dontseeme" ,
47
+ "AnotherHeader" => "still_here"
48
+ }
49
+ }
50
+ }
51
+
52
+ result = @processor . process ( data )
53
+
54
+ expect ( result [ "request" ] [ "headers" ] [ "Authorization" ] ) . to eq ( "********" )
55
+ expect ( result [ "request" ] [ "headers" ] [ "AnotherHeader" ] ) . to eq ( "still_here" )
56
+ end
41
57
end
Original file line number Diff line number Diff line change 37
37
38
38
expect ( result [ :request ] [ :data ] ) . to eq ( "sensitive_stuff" => "TOP_SECRET-GAMMA" )
39
39
end
40
+
41
+ it 'should remove post data when HTTP method is POST and keys are strings' do
42
+ data = {
43
+ "request" => {
44
+ "method" => "POST" ,
45
+ "data" => {
46
+ "sensitive_stuff" => "TOP_SECRET-GAMMA"
47
+ }
48
+ }
49
+ }
50
+
51
+ result = @processor . process ( data )
52
+
53
+ expect ( result [ "request" ] [ "data" ] ) . to eq ( "********" )
54
+ end
40
55
end
Original file line number Diff line number Diff line change 1
1
require 'spec_helper'
2
2
require 'raven/processor/removestacktrace'
3
+ require 'active_support/core_ext/hash/keys'
3
4
4
5
describe Raven ::Processor ::RemoveStacktrace do
5
6
before do
42
43
expect ( result [ :exception ] [ :values ] [ 2 ] [ :stacktrace ] ) . to eq ( nil )
43
44
end
44
45
end
46
+
47
+ it 'should remove stacktraces even when keys are strings' do
48
+ data = Raven ::Event . capture_exception ( build_exception ) . to_hash . deep_stringify_keys
49
+
50
+ expect ( data [ "exception" ] [ "values" ] [ 0 ] [ "stacktrace" ] ) . to_not eq ( nil )
51
+ result = @processor . process ( data )
52
+
53
+ expect ( result [ "exception" ] [ "values" ] [ 0 ] [ "stacktrace" ] ) . to eq ( nil )
54
+ end
45
55
end
You can’t perform that action at this time.
0 commit comments