- 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
3.7 KiB
3.7 KiB
Изменения в SMS верификации
Дата: 2025-01-14
✅ Выполнено
-
Создан новый безопасный API (
sms-verify.php)- Генерация кода на сервере (не на клиенте)
- Хранение кодов в Redis с TTL 10 минут
- Серверная проверка кода
- Rate limiting: 5 SMS в час на номер
- Защита от брутфорса: блокировка после 10 попыток на 15 минут
- Использование кредов из
.env
-
Создана утилита для загрузки .env (
env_loader.php)- Автоматическая загрузка переменных из
.env - Функция
env()для получения значений
- Автоматическая загрузка переменных из
-
Обновлен JavaScript (
js/common.js)- Функция
send_sms()теперь использует новый API - Проверка кода выполняется на сервере
- Добавлен обработчик для повторной отправки SMS
- Функция
-
Обновлен старый API (
sms-test.php)- Теперь работает как прокси к новому API
- Обеспечивает обратную совместимость
📁 Новые файлы
env_loader.php- утилита для загрузки .envsms-verify.php- новый безопасный APISMS_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- Отправка SMSPOST /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) работает как прокси для обратной совместимости.