Files
erv-ticket-dev/CHANGELOG_SMS.md
Fedor 2c516362df feat: Secure SMS verification with Redis (Predis)
- Added Predis library for Redis connection (no PHP extension required)
- Server-side SMS code generation and storage in Redis
- Rate limiting and brute-force protection
- Integration with n8n webhook for SMS sending
- Environment variables moved to .env file
- Fixed policy verification endpoint
- Added file-based fallback if Redis unavailable
2026-01-15 15:40:13 +03:00

97 lines
3.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Изменения в SMS верификации
## Дата: 2025-01-14
### ✅ Выполнено
1. **Создан новый безопасный API** (`sms-verify.php`)
- Генерация кода на сервере (не на клиенте)
- Хранение кодов в Redis с TTL 10 минут
- Серверная проверка кода
- Rate limiting: 5 SMS в час на номер
- Защита от брутфорса: блокировка после 10 попыток на 15 минут
- Использование кредов из `.env`
2. **Создана утилита для загрузки .env** (`env_loader.php`)
- Автоматическая загрузка переменных из `.env`
- Функция `env()` для получения значений
3. **Обновлен JavaScript** (`js/common.js`)
- Функция `send_sms()` теперь использует новый API
- Проверка кода выполняется на сервере
- Добавлен обработчик для повторной отправки SMS
4. **Обновлен старый API** (`sms-test.php`)
- Теперь работает как прокси к новому API
- Обеспечивает обратную совместимость
### 📁 Новые файлы
- `env_loader.php` - утилита для загрузки .env
- `sms-verify.php` - новый безопасный API
- `SMS_VERIFICATION_README.md` - документация
### 🔄 Измененные файлы
- `sms-test.php` - переписан как прокси
- `js/common.js` - обновлен для использования нового API
### 🔐 Безопасность
**До:**
- ❌ Код генерировался на клиенте (JavaScript)
- ❌ Код хранился в переменной JavaScript
- ❌ Проверка кода только на клиенте
- ❌ Креды в открытом виде в коде
- ❌ Нет защиты от брутфорса
- ❌ Нет rate limiting
**После:**
- ✅ Код генерируется на сервере
- ✅ Код хранится в Redis
- ✅ Проверка кода на сервере
- ✅ Креды в `.env` файле
- ✅ Защита от брутфорса (10 попыток → блокировка)
- ✅ Rate limiting (5 SMS/час)
### 📊 Используемые переменные из .env
```
SMS_API_URL=https://online.sigmasms.ru/api/
SMS_LOGIN=kfv.advokat@gmail.com
SMS_PASSWORD=s7NRIb
SMS_TOKEN=27f89492e00973263ff746a655663678fae7203bac8b62919700e489e33b3902
SMS_SENDER=Clientright
REDIS_HOST=crm.clientright.ru
REDIS_PORT=6379
REDIS_PASSWORD=CRM_Redis_Pass_2025_Secure!
```
### 🚀 Endpoints
**Новый API (рекомендуется):**
- `POST /sms-verify.php?action=send` - Отправка SMS
- `POST /sms-verify.php?action=verify` - Проверка кода
- `POST /sms-verify.php?action=check_verified` - Проверка статуса
**Старый API (для обратной совместимости):**
- `POST /sms-test.php` - Прокси к новому API
### 📝 Логи
Все операции логируются в:
- `logs/sms_verify.log`
### ✅ Проверка
Все файлы проверены на синтаксические ошибки:
-`sms-verify.php` - OK
-`sms-test.php` - OK
-`env_loader.php` - OK
### 🎯 Статус
**Готово к использованию!**
JavaScript уже использует новый API (`sms-verify.php`), старый API (`sms-test.php`) работает как прокси для обратной совместимости.