Ignorieren sämtlicher URL-Parameter, um die Sicherheit zu erhöhen. Wie?

Ignorieren sämtlicher URL-Parameter, um die Sicherheit zu erhöhen. Wie?

Wer einen NGINX-Server online stellt und ihn sich access.logeine Woche später ansieht, wird feststellen, dass jede Menge Versuche zum Ausnutzen von URLs unternommen werden. Jeden Tag, zu jeder Zeit.

Was wäre, wenn ich alle URL-Parameter ablehnen würde? Was wäre, wenn jede Abfragezeichenfolge mit einem NGINX maskiert wäre, rewritedas mit nichts übereinstimmt, was nicht als rewritenatürlich definiert definiert ist und eine 404-Fehlermeldung zurückgibt?

Oder eine Reihe von Neuschreibungen in der Reihenfolge, in der sie innerhalb dieses stets vorhandenen Standortblocks platziert werden?

location / {
  rewrite "^/api/v1/users/?$" /api/v1/Users.php last;
  rewrite "^/api/v1/users/(all|active|inactive)?$" /api/v1/Users.php?status=$1 last;
  rewrite "^/api/v1/users/(\d+)/?$" /api/v1/Users.php?userId=$1 last;
}

# URL Match examples...

http://localhost/api/v1/users
http://localhost/api/v1/users/

http://localhost/api/v1/users/all
http://localhost/api/v1/users/active
http://localhost/api/v1/users/inactive

http://localhost/api/v1/users/2001
http://localhost/api/v1/users/2002
http://localhost/api/v1/users/2003

Gibt es eine Möglichkeit, NGINX anzuweisen, URL-Parameter zu ignorieren? Lassen Sie es mich wissen, wenn dies eine naive Frage ist. Vielleicht stelle ich die falsche Frage.

Antwort1

Verwenden Sie lieber returnstatt rewriteweil„Umschreibedirektive kann nur Code 301 oder 302 zurückgeben“. Erstellen Sie dazu ein locationmit einem regulären Ausdruck, um die spezifische Anforderungs-URI abzufangen.

Und wenn Sie alle diese Anfragen einfach löschen möchten, geben Sie eineHTTP-Status 444.

Beispiel:

server {
    # ...
    location ~* ^/api/v1/users/.*$ {
        return  444;
    }
}

verwandte Informationen