Този проект представлява пълнофункционален уеб сървър, изграден изцяло с Vanilla Node.js (без външни фреймуоркове като Express).
Системата включва регистрация, вход, защитено управление на сесии и сигурност.
- Node.js: Основна среда за изпълнение
- SQL (MySQL): За съхранение на потребителски данни и активни сесии
- http: Създаване на сървъра и ниско ниво на обработка на заявките
- fs (File System): Четене и сервиране на статични файлове
- path: Коректно управление на пътища между файловете
- url: Парсване на URL адреси и параметри от заявките
- dotenv: Сигурно съхранение на конфигурации (Environment Variables)
- mysql2: Асинхронна комуникация с базата данни
- Обработката на всички GET и POST заявки се извършва чрез директни проверки на
req.methodиparsedUrl.pathname. - Не се използват готови рутери или външни библиотеки.
- Уникални сесии: Генерират се чрез
utils.generateSessionId(). - Валидация на сесията: Проверява се при всяка защитена заявка чрез базата данни.
- Login/Logout
- Login: Проверява данните чрез
utils.validateUsername()иutils.validatePassword(). Ако данните са валидни, се създава нова сесия. - Logout: Изтрива сесията от базата и премахва cookie от клиента.
- Login: Проверява данните чрез
- Сигурност: Сесийните cookies са HttpOnly, за защита срещу XSS.
- Хеширане на пароли: Всички пароли се обработват чрез SHA-256.
- CAPTCHA система: Интегрирана SVG капча за регистрация, която защитава от автоматизирани ботове.
- Кодовете имат ограничено време на валидност (TTL).
- Валидация на входни данни:
utils.validateUsername(username)– проверка на потребителско име.utils.validatePassword(password)– проверка на парола.utils.validateCaptcha(captchaInput, sessionId)– проверка на CAPTCHA.
- API ендпоинти за извличане на информация за профила.
- Промяна на имена и парола:
- Данните се валидират чрез
utilsфункции преди запис в базата.
- Данните се валидират чрез
- Защитени действия: Изискват валидна сесия.
- generateCaptcha в utils.js
- createMockReqRes в server.test.js
- src/:
- server.js - Основен сървърен файл и входна точка
- db.js - Логика за връзка с базата данни
- utils.js - Помощни функции за сигурност и валидация
- public/ - Статични ресурси (HTML, CSS, JS)