README: как защищён путь админки (путь не попадает ни в HTML, ни в JSON)
This commit is contained in:
22
README.md
22
README.md
@@ -302,6 +302,28 @@ ADMIN_PASSWORD=<длинный пароль>
|
|||||||
адреса блокируется на `ADMIN_LOCKOUT_MINUTES` минут (по умолчанию 15). Сессия —
|
адреса блокируется на `ADMIN_LOCKOUT_MINUTES` минут (по умолчанию 15). Сессия —
|
||||||
подписанная cookie на 12 часов.
|
подписанная cookie на 12 часов.
|
||||||
|
|
||||||
|
### Как защищён путь админки
|
||||||
|
|
||||||
|
- путь задаётся только в `.env` и больше нигде не хранится: ни в HTML, ни в
|
||||||
|
JSON, ни в JS — неавторизованный пользователь его нигде не увидит;
|
||||||
|
- кнопка «Админка» на главной показывается только вошедшему (сервер проверяет
|
||||||
|
cookie и добавляет в страницу лишь флаг, без пути) и ведёт на служебный
|
||||||
|
`/api/admin/goto`, который отвечает редиректом (302) на секретный путь —
|
||||||
|
поэтому путь не попадает в разметку и его не вычитает краулер;
|
||||||
|
- без валидной сессии `/api/admin/*` отвечает `401`, на неизвестных путях сайт
|
||||||
|
отдаёт обычный 404 — перебором путь не находится;
|
||||||
|
- страница панели отдаётся с заголовками `X-Robots-Tag: noindex, nofollow,
|
||||||
|
noarchive`, `Referrer-Policy: no-referrer` (путь не утечёт во внешние ссылки
|
||||||
|
через Referer), `X-Frame-Options: DENY` и `Cache-Control: no-store`;
|
||||||
|
- в `robots.txt` пути нет (там только `Disallow: /api/`) — иначе мы бы сами его
|
||||||
|
опубликовали; внешние ссылки в панели открываются с `rel="noopener noreferrer"`;
|
||||||
|
- при желании путь можно убрать и из логов nginx: добавить в конфиг сайта
|
||||||
|
`location = <ADMIN_PATH> { access_log off; }`.
|
||||||
|
|
||||||
|
Остаётся только история браузера у самого админа — это неизбежно (браузер должен
|
||||||
|
знать, куда идти), поэтому панель лучше открывать с личного устройства, а путь
|
||||||
|
держать в менеджере паролей.
|
||||||
|
|
||||||
Настройки (ссылка, интервал, история входов) хранятся в `SETTINGS_FILE`
|
Настройки (ссылка, интервал, история входов) хранятся в `SETTINGS_FILE`
|
||||||
(по умолчанию `data/settings.json` в корне проекта; в docker — в томе
|
(по умолчанию `data/settings.json` в корне проекта; в docker — в томе
|
||||||
`schedule_data`). Если файл недоступен для записи, изменения живут в памяти до
|
`schedule_data`). Если файл недоступен для записи, изменения живут в памяти до
|
||||||
|
|||||||
Reference in New Issue
Block a user