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 11module Raven
22 class Processor ::Cookies < Processor
33 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" ]
126
137 data
148 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
1525 end
1626end
Original file line number Diff line number Diff line change @@ -10,17 +10,30 @@ def initialize(client)
1010 end
1111
1212 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" ]
1815
1916 data
2017 end
2118
2219 private
2320
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+
2437 def matches_regexes? ( k )
2538 fields_re . match ( k . to_s )
2639 end
Original file line number Diff line number Diff line change 11module Raven
22 class Processor ::PostData < Processor
33 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" ]
76
87 data
98 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
1021 end
1122end
Original file line number Diff line number Diff line change 11module Raven
22 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 ]
815 end
16+ end
917
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
1122 end
1223 end
1324end
Original file line number Diff line number Diff line change 99 end
1010
1111 it 'should remove cookies' do
12- data = {
12+ test_data = {
1313 :request => {
1414 :headers => {
1515 "Cookie" => "_sentry-testapp_session=SlRKVnNha2Z" ,
2020 }
2121 }
2222
23- result = @processor . process ( data )
23+ result = @processor . process ( test_data )
2424
2525 expect ( result [ :request ] [ :cookies ] ) . to eq ( "********" )
2626 expect ( result [ :request ] [ :headers ] [ "Cookie" ] ) . to eq ( "********" )
2727 expect ( result [ :request ] [ :some_other_data ] ) . to eq ( "still_here" )
2828 expect ( result [ :request ] [ :headers ] [ "AnotherHeader" ] ) . to eq ( "still_here" )
2929 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
3050end
Original file line number Diff line number Diff line change 3838 expect ( result [ :request ] [ :headers ] [ "User-Defined-Header" ] ) . to eq ( "********" )
3939 expect ( result [ :request ] [ :headers ] [ "AnotherHeader" ] ) . to eq ( "still_here" )
4040 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
4157end
Original file line number Diff line number Diff line change 3737
3838 expect ( result [ :request ] [ :data ] ) . to eq ( "sensitive_stuff" => "TOP_SECRET-GAMMA" )
3939 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
4055end
Original file line number Diff line number Diff line change 11require 'spec_helper'
22require 'raven/processor/removestacktrace'
3+ require 'active_support/core_ext/hash/keys'
34
45describe Raven ::Processor ::RemoveStacktrace do
56 before do
4243 expect ( result [ :exception ] [ :values ] [ 2 ] [ :stacktrace ] ) . to eq ( nil )
4344 end
4445 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
4555end
You can’t perform that action at this time.
0 commit comments