UWSGI всегда возвращает index.html, если не может найти соответствующий маршрут в приложении
У меня есть приложение Django, развернутое с помощью uWSGI, из которого я также обслуживаю статические файлы, содержащие index.html, файлы javascript, созданные Angular, и кучу других активов, которые в большинстве своем являются изображениями.
Когда я проводил легкое тестирование на проникновение, я заметил некоторые странные реакции.
Запрос типа: GET /api/users/123/ вернулся успешно без каких-либо проблем, и я получил JSON с конкретным пользователем.
Запрос типа: GET /api/users/&document.vulnerable=true;/ вернул 200 OK, и результатом была только страница index.html.
После моего легкого осмотра, кажется, что если значения, которые вставляются в процессе fuzzing в место /api/users/$fuzz_insert$/ содержат любые комбинации точек (.) или слешей (/), он не может сопоставить их ни с одним маршрутом в приложении, и просто возвращает страницу index.html.
Когда я тестирую точно такой же запрос с Django локально, я получаю ошибку 404 и страницу, где говорится, что конкретный URL не может быть найден, даже если точки и слеши правильно закодированы. Поэтому я сначала предположил, что Django имеет что-то против точек и слешей в URL. Но еще больше меня смущает то, что при развертывании с помощью uWSGI, кажется, что при возникновении ошибки 404 в той же манере, что и на этой стороне, вместо возврата именно 404, я получаю 200 OK с index.html. Возможно, это как-то связано с конфигурацией uwsgi.ini и их маршрутизацией по умолчанию со статическими файлами, которая дает такое поведение, но я не могу обойти их документацию. Я пробовал множество статических связок, и всегда получал один и тот же результат.
Запуск файла uwsgi.ini с описанным поведением выглядит следующим образом:
[uwsgi]
plugins=/usr/lib/uwsgi/plugins/python3,/usr/lib/uwsgi/plugins/router_static
module=backend.wsgi:application
master=true
pidfile=/tmp/app.pid
vacuum=true
http=0.0.0.0:8000
processes=4
enable-threads=true
max-requests=5000
single-interpreter=true
harakiri=5000
buffer-size=32768
env=DJANGO_SETTINGS=prod
Любая помощь в понимании поведения будет очень признательна. Заранее спасибо.