So the following code will protect your entire joomla site from XSS exploits, MySQL Injections and other malicious activity.
Edit your joomla's root "index.php"
Above where the index.php reads :
Code:
<?php
define( '_JEXEC', 1 );
Insert the following :
Code:
<?php
if (strlen($_SERVER['REQUEST_URI']) > 255 ||
strpos($_SERVER['REQUEST_URI'], "eval(") ||
strpos($_SERVER['REQUEST_URI'], "*") ||
strpos($_SERVER['REQUEST_URI'], ":") ||
strpos($_SERVER['REQUEST_URI'], "!") ||
strpos($_SERVER['REQUEST_URI'], "$") ||
strpos($_SERVER['REQUEST_URI'], "£") ||
strpos($_SERVER['REQUEST_URI'], "<") ||
strpos($_SERVER['REQUEST_URI'], ">") ||
strpos($_SERVER['REQUEST_URI'], "^") ||
strpos($_SERVER['REQUEST_URI'], "(") ||
strpos($_SERVER['REQUEST_URI'], ")") ||
strpos($_SERVER['REQUEST_URI'], "}") ||
strpos($_SERVER['REQUEST_URI'], "{") ||
strpos($_SERVER['REQUEST_URI'], "]") ||
strpos($_SERVER['REQUEST_URI'], "[") ||
strpos($_SERVER['REQUEST_URI'], ";") ||
strpos($_SERVER['REQUEST_URI'], "@") ||
strpos($_SERVER['REQUEST_URI'], "~") ||
strpos($_SERVER['REQUEST_URI'], "|") ||
strpos($_SERVER['REQUEST_URI'], "%") ||
strpos($_SERVER['REQUEST_URI'], "%08") ||
strpos($_SERVER['REQUEST_URI'], "%09") ||
strpos($_SERVER['REQUEST_URI'], "%0A") ||
strpos($_SERVER['REQUEST_URI'], "%0D") ||
strpos($_SERVER['REQUEST_URI'], "%20") ||
strpos($_SERVER['REQUEST_URI'], "%21") ||
strpos($_SERVER['REQUEST_URI'], "%22") ||
strpos($_SERVER['REQUEST_URI'], "%23") ||
strpos($_SERVER['REQUEST_URI'], "%24") ||
strpos($_SERVER['REQUEST_URI'], "%25") ||
strpos($_SERVER['REQUEST_URI'], "%26") ||
strpos($_SERVER['REQUEST_URI'], "%27") ||
strpos($_SERVER['REQUEST_URI'], "%28") ||
strpos($_SERVER['REQUEST_URI'], "%29") ||
strpos($_SERVER['REQUEST_URI'], "%2A") ||
strpos($_SERVER['REQUEST_URI'], "%2B") ||
strpos($_SERVER['REQUEST_URI'], "%2C") ||
strpos($_SERVER['REQUEST_URI'], "%2D") ||
strpos($_SERVER['REQUEST_URI'], "%2E") ||
strpos($_SERVER['REQUEST_URI'], "%2F") ||
strpos($_SERVER['REQUEST_URI'], "%30") ||
strpos($_SERVER['REQUEST_URI'], "%31") ||
strpos($_SERVER['REQUEST_URI'], "%32") ||
strpos($_SERVER['REQUEST_URI'], "%33") ||
strpos($_SERVER['REQUEST_URI'], "%34") ||
strpos($_SERVER['REQUEST_URI'], "%35") ||
strpos($_SERVER['REQUEST_URI'], "%36") ||
strpos($_SERVER['REQUEST_URI'], "%37") ||
strpos($_SERVER['REQUEST_URI'], "%38") ||
strpos($_SERVER['REQUEST_URI'], "%39") ||
strpos($_SERVER['REQUEST_URI'], "%3A") ||
strpos($_SERVER['REQUEST_URI'], "%3B") ||
strpos($_SERVER['REQUEST_URI'], "%3C") ||
strpos($_SERVER['REQUEST_URI'], "%3D") ||
strpos($_SERVER['REQUEST_URI'], "%3E") ||
strpos($_SERVER['REQUEST_URI'], "%3F") ||
strpos($_SERVER['REQUEST_URI'], "%40") ||
strpos($_SERVER['REQUEST_URI'], "%41") ||
strpos($_SERVER['REQUEST_URI'], "%42") ||
strpos($_SERVER['REQUEST_URI'], "%43") ||
strpos($_SERVER['REQUEST_URI'], "%44") ||
strpos($_SERVER['REQUEST_URI'], "%45") ||
strpos($_SERVER['REQUEST_URI'], "%46") ||
strpos($_SERVER['REQUEST_URI'], "%47") ||
strpos($_SERVER['REQUEST_URI'], "%48") ||
strpos($_SERVER['REQUEST_URI'], "%49") ||
strpos($_SERVER['REQUEST_URI'], "%4A") ||
strpos($_SERVER['REQUEST_URI'], "%4B") ||
strpos($_SERVER['REQUEST_URI'], "%4C") ||
strpos($_SERVER['REQUEST_URI'], "%4D") ||
strpos($_SERVER['REQUEST_URI'], "%4E") ||
strpos($_SERVER['REQUEST_URI'], "%4F") ||
strpos($_SERVER['REQUEST_URI'], "%50") ||
strpos($_SERVER['REQUEST_URI'], "%51") ||
strpos($_SERVER['REQUEST_URI'], "%52") ||
strpos($_SERVER['REQUEST_URI'], "%53") ||
strpos($_SERVER['REQUEST_URI'], "%54") ||
strpos($_SERVER['REQUEST_URI'], "%55") ||
strpos($_SERVER['REQUEST_URI'], "%56") ||
strpos($_SERVER['REQUEST_URI'], "%57") ||
strpos($_SERVER['REQUEST_URI'], "%58") ||
strpos($_SERVER['REQUEST_URI'], "%59") ||
strpos($_SERVER['REQUEST_URI'], "%5A") ||
strpos($_SERVER['REQUEST_URI'], "%5B") ||
strpos($_SERVER['REQUEST_URI'], "%5C") ||
strpos($_SERVER['REQUEST_URI'], "%5D") ||
strpos($_SERVER['REQUEST_URI'], "%5E") ||
strpos($_SERVER['REQUEST_URI'], "%5F") ||
strpos($_SERVER['REQUEST_URI'], "%60") ||
strpos($_SERVER['REQUEST_URI'], "%61") ||
strpos($_SERVER['REQUEST_URI'], "%62") ||
strpos($_SERVER['REQUEST_URI'], "%63") ||
strpos($_SERVER['REQUEST_URI'], "%64") ||
strpos($_SERVER['REQUEST_URI'], "%65") ||
strpos($_SERVER['REQUEST_URI'], "%66") ||
strpos($_SERVER['REQUEST_URI'], "%67") ||
strpos($_SERVER['REQUEST_URI'], "%68") ||
strpos($_SERVER['REQUEST_URI'], "%69") ||
strpos($_SERVER['REQUEST_URI'], "%6A") ||
strpos($_SERVER['REQUEST_URI'], "%6B") ||
strpos($_SERVER['REQUEST_URI'], "%6C") ||
strpos($_SERVER['REQUEST_URI'], "%6D") ||
strpos($_SERVER['REQUEST_URI'], "%6E") ||
strpos($_SERVER['REQUEST_URI'], "%6F") ||
strpos($_SERVER['REQUEST_URI'], "%70") ||
strpos($_SERVER['REQUEST_URI'], "%71") ||
strpos($_SERVER['REQUEST_URI'], "%72") ||
strpos($_SERVER['REQUEST_URI'], "%73") ||
strpos($_SERVER['REQUEST_URI'], "%74") ||
strpos($_SERVER['REQUEST_URI'], "%75") ||
strpos($_SERVER['REQUEST_URI'], "%76") ||
strpos($_SERVER['REQUEST_URI'], "%77") ||
strpos($_SERVER['REQUEST_URI'], "%78") ||
strpos($_SERVER['REQUEST_URI'], "%79") ||
strpos($_SERVER['REQUEST_URI'], "%7A") ||
strpos($_SERVER['REQUEST_URI'], "%7B") ||
strpos($_SERVER['REQUEST_URI'], "%7C") ||
strpos($_SERVER['REQUEST_URI'], "%7D") ||
strpos($_SERVER['REQUEST_URI'], "%7E") ||
strpos($_SERVER['REQUEST_URI'], "%A2") ||
strpos($_SERVER['REQUEST_URI'], "%A3") ||
strpos($_SERVER['REQUEST_URI'], "%A5") ||
strpos($_SERVER['REQUEST_URI'], "%A6") ||
strpos($_SERVER['REQUEST_URI'], "%A7") ||
strpos($_SERVER['REQUEST_URI'], "%AB") ||
strpos($_SERVER['REQUEST_URI'], "%AC") ||
strpos($_SERVER['REQUEST_URI'], "%AD") ||
strpos($_SERVER['REQUEST_URI'], "%B0") ||
strpos($_SERVER['REQUEST_URI'], "%B1") ||
strpos($_SERVER['REQUEST_URI'], "%B2") ||
strpos($_SERVER['REQUEST_URI'], "%B4") ||
strpos($_SERVER['REQUEST_URI'], "%B5") ||
strpos($_SERVER['REQUEST_URI'], "%BB") ||
strpos($_SERVER['REQUEST_URI'], "%BC") ||
strpos($_SERVER['REQUEST_URI'], "%BD") ||
strpos($_SERVER['REQUEST_URI'], "%BF") ||
strpos($_SERVER['REQUEST_URI'], "%C0") ||
strpos($_SERVER['REQUEST_URI'], "%C1") ||
strpos($_SERVER['REQUEST_URI'], "%C2") ||
strpos($_SERVER['REQUEST_URI'], "%C3") ||
strpos($_SERVER['REQUEST_URI'], "%C4") ||
strpos($_SERVER['REQUEST_URI'], "%C5") ||
strpos($_SERVER['REQUEST_URI'], "%C6") ||
strpos($_SERVER['REQUEST_URI'], "%C7") ||
strpos($_SERVER['REQUEST_URI'], "%C8") ||
strpos($_SERVER['REQUEST_URI'], "%C9") ||
strpos($_SERVER['REQUEST_URI'], "%CA") ||
strpos($_SERVER['REQUEST_URI'], "%CB") ||
strpos($_SERVER['REQUEST_URI'], "%CC") ||
strpos($_SERVER['REQUEST_URI'], "%CD") ||
strpos($_SERVER['REQUEST_URI'], "%CE") ||
strpos($_SERVER['REQUEST_URI'], "%CF") ||
strpos($_SERVER['REQUEST_URI'], "%D0") ||
strpos($_SERVER['REQUEST_URI'], "%D1") ||
strpos($_SERVER['REQUEST_URI'], "%D2") ||
strpos($_SERVER['REQUEST_URI'], "%D3") ||
strpos($_SERVER['REQUEST_URI'], "%D4") ||
strpos($_SERVER['REQUEST_URI'], "%D5") ||
strpos($_SERVER['REQUEST_URI'], "%D6") ||
strpos($_SERVER['REQUEST_URI'], "%D8") ||
strpos($_SERVER['REQUEST_URI'], "%D9") ||
strpos($_SERVER['REQUEST_URI'], "%DA") ||
strpos($_SERVER['REQUEST_URI'], "%DB") ||
strpos($_SERVER['REQUEST_URI'], "%DC") ||
strpos($_SERVER['REQUEST_URI'], "%DD") ||
strpos($_SERVER['REQUEST_URI'], "%DE") ||
strpos($_SERVER['REQUEST_URI'], "%DF") ||
strpos($_SERVER['REQUEST_URI'], "%E0") ||
strpos($_SERVER['REQUEST_URI'], "%E1") ||
strpos($_SERVER['REQUEST_URI'], "%E2") ||
strpos($_SERVER['REQUEST_URI'], "%E3") ||
strpos($_SERVER['REQUEST_URI'], "%E4") ||
strpos($_SERVER['REQUEST_URI'], "%E5") ||
strpos($_SERVER['REQUEST_URI'], "%E6") ||
strpos($_SERVER['REQUEST_URI'], "%E7") ||
strpos($_SERVER['REQUEST_URI'], "%E8") ||
strpos($_SERVER['REQUEST_URI'], "%E9") ||
strpos($_SERVER['REQUEST_URI'], "%EA") ||
strpos($_SERVER['REQUEST_URI'], "%EB") ||
strpos($_SERVER['REQUEST_URI'], "%EC") ||
strpos($_SERVER['REQUEST_URI'], "%ED") ||
strpos($_SERVER['REQUEST_URI'], "%EE") ||
strpos($_SERVER['REQUEST_URI'], "%EF") ||
strpos($_SERVER['REQUEST_URI'], "%F0") ||
strpos($_SERVER['REQUEST_URI'], "%F1") ||
strpos($_SERVER['REQUEST_URI'], "%F2") ||
strpos($_SERVER['REQUEST_URI'], "%F3") ||
strpos($_SERVER['REQUEST_URI'], "%F4") ||
strpos($_SERVER['REQUEST_URI'], "%F5") ||
strpos($_SERVER['REQUEST_URI'], "%F6") ||
strpos($_SERVER['REQUEST_URI'], "%F7") ||
strpos($_SERVER['REQUEST_URI'], "%F8") ||
strpos($_SERVER['REQUEST_URI'], "%F9") ||
strpos($_SERVER['REQUEST_URI'], "%FA") ||
strpos($_SERVER['REQUEST_URI'], "%FB") ||
strpos($_SERVER['REQUEST_URI'], "%FC") ||
strpos($_SERVER['REQUEST_URI'], "%FD") ||
strpos($_SERVER['REQUEST_URI'], "%FE") ||
strpos($_SERVER['REQUEST_URI'], "%FF") ||
strpos($_SERVER['REQUEST_URI'], "CONCAT") ||
strpos($_SERVER['REQUEST_URI'], "SQL") ||
strpos($_SERVER['REQUEST_URI'], "\"") ||
strpos($_SERVER['REQUEST_URI'], "UNION+SELECT") ||
strpos($_SERVER['REQUEST_URI'], "UNION+ALL") ||
strpos($_SERVER['REQUEST_URI'], "DELETE") ||
strpos($_SERVER['REQUEST_URI'], "base64")) {
@header("HTTP/1.1 414 Request-URI Too Long");
@header("Status: 414 Request-URI Too Long");
@header("Connection: Close");
@exit;
}
?>
If you wish to add your own strings to be blocked just add another line of "strpos($_SERVER['REQUEST_URI'], "Test") ||"
To test it do something like this in your url.
http://www.steam-hacks.com/index.php?DELETEIf your running SEF url's the same applies
http://www.steam-hacks.com/?DELETEhttp://www.steam-hacks.com/index.html#DELETEForgot to mention it is case sensative!