]> git.mxchange.org Git - friendica.git/commitdiff
Improved DDoS detection
authorMichael Vogel <icarus@dabo.de>
Wed, 20 Apr 2016 20:10:05 +0000 (22:10 +0200)
committerMichael Vogel <icarus@dabo.de>
Wed, 20 Apr 2016 20:10:05 +0000 (22:10 +0200)
index.php

index a69a8d0c36b4bc50942bb5b9450ce1d2e1671555..9301227ea81e9b43ceedf5c4b0c644bd0f30372b 100644 (file)
--- a/index.php
+++ b/index.php
@@ -118,14 +118,20 @@ if((x($_SESSION,'language')) && ($_SESSION['language'] !== $lang)) {
 
 if((x($_GET,'zrl')) && (!$install && !$maintenance)) {
        // Only continue when the given profile link seems valid
-       // Valid profile links contain a path and no query parameters
+       // Valid profile links contain a path with "/profile/" and no query parameters
        if ((parse_url($_GET['zrl'], PHP_URL_QUERY) == "") AND
-               (parse_url($_GET['zrl'],  PHP_URL_PATH) != "")) {
+               strstr(parse_url($_GET['zrl'], PHP_URL_PATH), "/profile/")) {
                $_SESSION['my_url'] = $_GET['zrl'];
                $a->query_string = preg_replace('/[\?&]zrl=(.*?)([\?&]|$)/is','',$a->query_string);
                zrl_init($a);
-       } else
+       } else {
+               // Someone came with an invalid parameter, maybe as a DDoS attempt
+               // We simply stop processing here
                logger("Invalid ZRL parameter ".$_GET['zrl'], LOGGER_DEBUG);
+               header('HTTP/1.1 403 Forbidden');
+               echo "<h1>403 Forbidden</h1>";
+               killme();
+       }
 }
 
 /**