Created
February 6, 2020 15:30
-
-
Save jaygooby/09dc00506f6f4182f1c380c4e16a8a86 to your computer and use it in GitHub Desktop.
Use the correct google country domain in your nginx content-security-policy header, instead of all of them
This file contains 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
#!/bin/bash | |
# | |
# Generates an nginx compatible map that you can use to | |
# put the relevant Google country code in your Content-Security-Policy | |
# instead of having them all. | |
# | |
# Add these to your nginx config: | |
# geoip2 /path/to/GeoLite2-Country.mmdb { | |
# $geoip2_country_code default=US source=$remote_addr country iso_code; | |
# $geoip2_country_name country names en; | |
# } | |
# | |
# Then the map output of this script: | |
# map $geoip2_country_code $google_domain { | |
# US *.google.com; | |
# AD *.google.ad; | |
# ... | |
# ... | |
# } | |
# | |
# Then the CSP header line: | |
# add_header Content-Security-Policy "default-src example.com $google_domain;"; | |
echo "map \$geoip2_country_code \$google_domain {" | |
# fetch the domains | |
country_tlds=$(curl -s https://www.google.com/supported_domains) | |
for tld in $country_tlds | |
# fetch the characters after the last . | |
# .google.ad becomes ad | |
do iso_country=${tld##*.} | |
# Upcase the ISO country code and do a couple of replacements: | |
# | |
# COM needs to be US ISO | |
# The UK's ISO is actually GB | |
# | |
# Then echo out the map line | |
echo -e "\t$(echo $iso_country | tr '[:lower:]' '[:upper:]' | sed 's/COM/US/' | sed 's/UK/GB/') *${tld};" | |
done | |
echo "}" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Means you no longer have to have a CSP like:
content-security-policy: default-src example.com *.google.com *.google.ad *.google.ae *.google.com.af *.google.com.ag *.google.com.ai *.google.al *.google.am *.google.co.ao *.google.com.ar *.google.as *.google.at *.google.com.au *.google.az *.google.ba *.google.com.bd *.google.be *.google.bf *.google.bg *.google.com.bh *.google.bi *.google.bj *.google.com.bn *.google.com.bo *.google.com.br *.google.bs *.google.bt *.google.co.bw *.google.by *.google.com.bz *.google.ca *.google.cd *.google.cf *.google.cg *.google.ch *.google.ci *.google.co.ck *.google.cl *.google.cm *.google.cn *.google.com.co *.google.co.cr *.google.com.cu *.google.cv *.google.com.cy *.google.cz *.google.de *.google.dj *.google.dk *.google.dm *.google.com.do *.google.dz *.google.com.ec *.google.ee *.google.com.eg *.google.es *.google.com.et *.google.fi *.google.com.fj *.google.fm *.google.fr *.google.ga *.google.ge *.google.gg *.google.com.gh *.google.com.gi *.google.gl *.google.gm *.google.gr *.google.com.gt *.google.gy *.google.com.hk *.google.hn *.google.hr *.google.ht *.google.hu *.google.co.id *.google.ie *.google.co.il *.google.im *.google.co.in *.google.iq *.google.is *.google.it *.google.je *.google.com.jm *.google.jo *.google.co.jp *.google.co.ke *.google.com.kh *.google.ki *.google.kg *.google.co.kr *.google.com.kw *.google.kz *.google.la *.google.com.lb *.google.li *.google.lk *.google.co.ls *.google.lt *.google.lu *.google.lv *.google.com.ly *.google.co.ma *.google.md *.google.me *.google.mg *.google.mk *.google.ml *.google.com.mm *.google.mn *.google.ms *.google.com.mt *.google.mu *.google.mv *.google.mw *.google.com.mx *.google.com.my *.google.co.mz *.google.com.na *.google.com.ng *.google.com.ni *.google.ne *.google.nl *.google.no *.google.com.np *.google.nr *.google.nu *.google.co.nz *.google.com.om *.google.com.pa *.google.com.pe *.google.com.pg *.google.com.ph *.google.com.pk *.google.pl *.google.pn *.google.com.pr *.google.ps *.google.pt *.google.com.py *.google.com.qa *.google.ro *.google.ru *.google.rw *.google.com.sa *.google.com.sb *.google.sc *.google.se *.google.com.sg *.google.sh *.google.si *.google.sk *.google.com.sl *.google.sn *.google.so *.google.sm *.google.sr *.google.st *.google.com.sv *.google.td *.google.tg *.google.co.th *.google.com.tj *.google.tl *.google.tm *.google.tn *.google.to *.google.com.tr *.google.tt *.google.com.tw *.google.co.tz *.google.com.ua *.google.co.ug *.google.co.uk *.google.com.uy *.google.co.uz *.google.com.vc *.google.co.ve *.google.vg *.google.co.vi *.google.com.vn *.google.vu *.google.ws *.google.rs *.google.co.za *.google.co.zm *.google.co.zw *.google.cat 'report-sample'; report-uri https://example.com/csp_logger