Module: Datadog::AppSec::ActionsHandler
- Defined in:
- lib/datadog/appsec/actions_handler.rb,
lib/datadog/appsec/actions_handler/serializable_backtrace.rb
Overview
this module encapsulates functions for handling actions that libddawf returns
Defined Under Namespace
Classes: SerializableBacktrace
Class Method Summary
collapse
Class Method Details
.generate_schema(_action_params) ⇒ Object
45
|
# File 'lib/datadog/appsec/actions_handler.rb', line 45
def generate_schema(_action_params); end
|
.generate_stack(action_params) ⇒ Object
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
# File 'lib/datadog/appsec/actions_handler.rb', line 24
def generate_stack(action_params)
return unless Datadog.configuration.appsec.stack_trace.enabled
stack_id = action_params['stack_id']
return unless stack_id
active_span = AppSec.active_context&.span
return unless active_span
event_category = Ext::EXPLOIT_PREVENTION_EVENT_CATEGORY
tag_key = Ext::TAG_METASTRUCT_STACK_TRACE
existing_stack_data = active_span.get_metastruct_tag(tag_key).dup || { event_category => [] }
max_stack_traces = Datadog.configuration.appsec.stack_trace.max_stack_traces
return if max_stack_traces != 0 && existing_stack_data[event_category].count >= max_stack_traces
backtrace = SerializableBacktrace.new(locations: Array(caller_locations), stack_id: stack_id)
existing_stack_data[event_category] << backtrace
active_span.set_metastruct_tag(tag_key, existing_stack_data)
end
|
.handle(actions_hash) ⇒ Object
11
12
13
14
15
16
17
18
|
# File 'lib/datadog/appsec/actions_handler.rb', line 11
def handle(actions_hash)
generate_stack(actions_hash['generate_stack']) if actions_hash.key?('generate_stack')
generate_schema(actions_hash['generate_schema']) if actions_hash.key?('generate_schema')
interrupt_execution(actions_hash['redirect_request']) if actions_hash.key?('redirect_request')
interrupt_execution(actions_hash['block_request']) if actions_hash.key?('block_request')
end
|
.interrupt_execution(action_params) ⇒ Object
20
21
22
|
# File 'lib/datadog/appsec/actions_handler.rb', line 20
def interrupt_execution(action_params)
throw(Datadog::AppSec::Ext::INTERRUPT, action_params)
end
|