Skip to content

Instantly share code, notes, and snippets.

@PFortin93
Created June 25, 2018 14:43
Show Gist options
  • Select an option

  • Save PFortin93/e12894c7ac97188e43a464efe462c2cf to your computer and use it in GitHub Desktop.

Select an option

Save PFortin93/e12894c7ac97188e43a464efe462c2cf to your computer and use it in GitHub Desktop.
Uses F5 LTM iRule to set referrer policy header for given array of domains
#Referrer-Policy iRule
#By: Pierce Fortin ([email protected])
#Checks for domain being requested on HTTP_Request, Sets flag for response rewrite if match
#If match, It then checks for Referrer-Policy as existing, if it doesn't exist it adds one
#If match and header !exist, It adds it.
#v1.0 6/19/2018 Initial write
when RULE_INIT
{
set static::referrerDebugOn 0
}
when CLIENT_ACCEPTED
{
set logPrefix "[IP::client_addr]:[TCP::client_port]:referrer:\[HTTPS\]:\t"
if { $static::referrerDebugOn } { log local0. "$logPrefix: Client accepted" }
}
when HTTP_REQUEST {
if { $static::referrerDebugOn } { log local0. "$logPrefix: ### Begin processing Incoming" }
set isreferrerDomain 0
array set referrerDomains
{
"domain.com"
"domain2.com"
}
foreach domain [array get referrerDomains]
{
if { $static::referrerDebugOn } { log local0. "$logPrefix: Checking [HTTP::host] against $domain" }
if { [string tolower [HTTP::host]] eq [string tolower $domain] } {
if { $static::referrerDebugOn } { log local0. "$logPrefix: Current request is an referrer domain. Processing" }
set isreferrerDomain 1
}
}
}
when HTTP_RESPONSE {
if { $static::referrerDebugOn } { log local0. "$logPrefix: Processing Response" }
if { $isreferrerDomain eq 1 } {
if { $static::referrerDebugOn } { log local0. "$logPrefix: Current request is an referrer domain. Inserting referrer" }
if { not([HTTP::header exists "Referrer-Policy"])}{
if { $static::referrerDebugOn } { log local0. "$logPrefix: Could not find existing Referrer-Policy header. Inserting" }
HTTP::header insert "Referrer-Policy" "no-referrer-when-downgrade"
}
else {
if { $static::referrerDebugOn } { log local0. "$logPrefix: Found existing Referrer-Policy header, Replacing" }
HTTP::header replace "Referrer-Policy" "no-referrer-when-downgrade"
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment