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

3.7 KiB
Raw Permalink Blame History

Изменения в 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) работает как прокси для обратной совместимости.