セキュリティを強化するために、すべての URL パラメータを無視します。方法は?

セキュリティを強化するために、すべての URL パラメータを無視します。方法は?

NGINX サーバーをオンラインにしてaccess.log1 週間後に確認すると、毎日、いつでも、多数の URL エクスプロイトが試行されていることに気付くでしょう。

では、すべての URL パラメータを拒否するとしたらどうなるでしょうか。すべてのクエリ文字列が NGINX でマスクされ、自然に 404 Not Found を返すrewriteように定義されていないものとは一致しないようになっていたらどうなるでしょうか。rewrite

それとも、この常に存在するロケーション ブロック内に順番に配置された一連の書き換えでしょうか?

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

NGINX に URL パラメータを無視するように指示する方法はありますか? これが素朴な質問であれば、遠慮なくお知らせください。おそらく私は間違った質問をしているのでしょう。

答え1

return代わりにrewritebecauseを使う「書き換えディレクティブはコード 301 または 302 のみを返すことができます」このためには、location特定のリクエスト URI をキャッチする正規表現を使用して を作成します。

これらのリクエストをすべて削除したい場合は、http ステータス 444

例:

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

関連情報