Created
June 25, 2018 14:43
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #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