Class: PxModule::PerimeterxCookieV3

Inherits:
PerimeterxPayload show all
Defined in:
lib/perimeterx/internal/payload/perimeter_x_cookie_v3.rb

Instance Attribute Summary collapse

Attributes inherited from PerimeterxPayload

#cookie_secret, #decoded_cookie, #px_cookie

Instance Method Summary collapse

Methods inherited from PerimeterxPayload

#cookie_time, #cookie_uuid, #cookie_vid, #decode, #decrypt, #deserialize, #expired?, #high_score?, #hmac_valid?, #is_valid?, px_cookie_factory, #secure_compare

Constructor Details

#initialize(px_config, px_ctx) ⇒ PerimeterxCookieV3

Returns a new instance of PerimeterxCookieV3.



6
7
8
9
10
11
12
13
14
# File 'lib/perimeterx/internal/payload/perimeter_x_cookie_v3.rb', line 6

def initialize(px_config, px_ctx)
  super(px_config)
  hash, cookie = px_ctx.get_px_cookie().split(':', 2)
  @px_cookie = cookie
  @cookie_hash = hash
  @px_ctx = px_ctx
  @cookie_secret = px_config[:cookie_key]
  @logger.debug("PerimeterxCookieV3[initialize]")
end

Instance Attribute Details

Returns the value of attribute cookie_hash.



4
5
6
# File 'lib/perimeterx/internal/payload/perimeter_x_cookie_v3.rb', line 4

def cookie_hash
  @cookie_hash
end

#px_configObject

Returns the value of attribute px_config.



4
5
6
# File 'lib/perimeterx/internal/payload/perimeter_x_cookie_v3.rb', line 4

def px_config
  @px_config
end

#px_ctxObject

Returns the value of attribute px_ctx.



4
5
6
# File 'lib/perimeterx/internal/payload/perimeter_x_cookie_v3.rb', line 4

def px_ctx
  @px_ctx
end

Instance Method Details



28
29
30
# File 'lib/perimeterx/internal/payload/perimeter_x_cookie_v3.rb', line 28

def cookie_block_action
  @decoded_cookie[:a]
end


20
21
22
# File 'lib/perimeterx/internal/payload/perimeter_x_cookie_v3.rb', line 20

def cookie_hmac
  return @cookie_hash
end


16
17
18
# File 'lib/perimeterx/internal/payload/perimeter_x_cookie_v3.rb', line 16

def cookie_score
  return @decoded_cookie[:s]
end

#secured?Boolean

Returns:

  • (Boolean)


32
33
34
35
# File 'lib/perimeterx/internal/payload/perimeter_x_cookie_v3.rb', line 32

def secured?
  hmac_string = "#{@px_cookie}#{@px_ctx.context[:user_agent]}"
  return hmac_valid?(hmac_string, cookie_hmac)
end

#valid_format?(cookie) ⇒ Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/perimeterx/internal/payload/perimeter_x_cookie_v3.rb', line 24

def valid_format?(cookie)
  return cookie.key?(:t) && cookie.key?(:s) && cookie.key?(:u) && cookie.key?(:a)
end