53 lines
1.7 KiB
Markdown
53 lines
1.7 KiB
Markdown
# Auth Form (PHP drop-in)
|
||
|
||
Современная форма авторизации с проверкой доступа к сайту через MariaDB.
|
||
Файлы можно копировать прямо в папку существующего сайта.
|
||
|
||
## Требования
|
||
|
||
- PHP 7.4+ (mysqli, sessions)
|
||
- MariaDB
|
||
|
||
## Установка
|
||
|
||
1. Создайте базу и таблицы:
|
||
- Запустите SQL из `db/schema.sql`
|
||
2. Заполните подключение к БД:
|
||
- Отредактируйте `auth/config.php`
|
||
3. Добавьте пользователя и доступ:
|
||
- `INSERT INTO users (login, password_hash) VALUES ('demo', '<HASH>');`
|
||
- `INSERT INTO user_access (user_id, site_key) VALUES (1, 'example.com');`
|
||
|
||
## Хэш пароля
|
||
|
||
Создать bcrypt-хэш можно так:
|
||
|
||
```php
|
||
<?php
|
||
echo password_hash("yourPassword", PASSWORD_BCRYPT);
|
||
```
|
||
|
||
## Интеграция в сайт (NAS)
|
||
|
||
1. Скопируйте папку `auth` в корень сайта.
|
||
2. На защищаемых HTML-страницах (кроме главной) добавьте:
|
||
|
||
```html
|
||
<meta name="site-key" content="example.com" />
|
||
<script src="/auth/guard.js"></script>
|
||
```
|
||
|
||
3. Главную страницу не защищайте — вход находится в `/auth/login.html`.
|
||
4. Если страницы могут быть PHP, используйте серверную защиту:
|
||
|
||
```php
|
||
<?php
|
||
define("AUTH_SITE_KEY", "example.com");
|
||
require __DIR__ . "/auth/guard.php";
|
||
```
|
||
|
||
## Лимиты и логирование
|
||
|
||
- Ограничение попыток: 10 запросов за 5 минут на IP
|
||
- Логи авторизации: `auth/logs/auth.log` (JSONL-строки)
|