Tak w ramach ciekawostki - przykładowy URL:
https://wampir.mroczna-zaloga.org/?q=!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
I teraz rezultat window.location.toString() w różnych przeglądarkach:
Firefox
https://wampir.mroczna-zaloga.org/?q=!%22#$%&%27()*+,-./:;%3C=%3E?@[\]^_%60{|}~
Chrome
https://wampir.mroczna-zaloga.org/?q=!%22#$%&'()*+,-./:;<=>?@[\]^_`{|}~
Internet Explorer
https://wampir.mroczna-zaloga.org/?q=!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
Edge
https://wampir.mroczna-zaloga.org/?q=!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
Sytuacja wygląda jeszcze ciekawiej, gdy zamiast tego użyje się window.location.search (trzeba usunąć znak # bo inaczej większość wchodzi w window.location.hash (do sprawdzenia we własnym zakresie).
O co chodzi? Coś, czego nie można wykorzystać w Chrome czy Firefox jak najbardziej może być exploitowalnym XSS w Edge / IE.