Changes between Initial Version and Version 1 of Security


Ignore:
Timestamp:
09/30/25 14:15:45 (3 weeks ago)
Author:
223075
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Security

    v1 v1  
     1= Безбедност (Security) =
     2
     3
     4== Што е имплементирано ==
     5* **Хеширање на лозинки (bcrypt):** при `/api/register-student` и `/api/register-instructor` се зачувува `*_password_hash`
     6* **Login со JWT:** `/api/login` (type: "user" или "instructor", email, password). Одговор: `{token, role}`
     7* **JWT аутентикација:** `/api/book-class` и `/api/register-event` читаат корисник од JWT ако е присутен, иначе користат `userId` од body
     8* **HTTP безбедносни заглавија:** `helmet()`.
     9* **Rate limit:** на `/api/login` и register рути.
     10* **Побезбеден CORS:** дозволени origin-и од `.env` (`CORS_ORIGIN=http://localhost:3000`).
     11* **Валидирање/санитизација:** базични проверки за email и должина на лозинка.
     12
     13== .env  ==
     14{{{
     15JWT_SECRET=change_this_in_production
     16CORS_ORIGIN=http://localhost:3000
     17RATE_LIMIT_WINDOW_MS=900000
     18RATE_LIMIT_MAX=50
     19PORT=5000
     20}}}
     21
     22== Тест сценарија ==
     231) Регистрација → лозинката се хешира.
     242) Логирање:
     25{{{
     26POST /api/login
     27{ "type":"user", "email":"ana@example.com", "password":"<lozinka>" }
     28}}}
     29Одговор:
     30{{{json
     31{ "success": true, "token": "<JWT>", "role": "user" }
     32}}}
     333) Користење на токен:
     34- `Authorization: Bearer <JWT>` при POST `/api/book-class` со `{ "classId": 7 }`.
     35
     36== Забелешки ==
     37* Сите SQL повици се **параметризирани** (`$1,$2,...`) → заштита од SQL injection.
     38* Преостанува: HTTPS, посебни secrets, поконкретни CORS правила и валидирање, и по можност серверска сесија/рефреш токени.