advanced

XSS, SQL injection и NoSQL injection

Предотвращайте script и query injection через contextual output encoding, parameterized queries, schema validation, escaping discipline и safe templating.

Injection внедряет исполняемый синтаксис в интерпретаторы: HTML/JS (XSS), SQL, shell, LDAP, операторы MongoDB.

Защита SQL: только parameterized queries — не конкатенация user input.

					await db.query('SELECT * FROM users WHERE email = $1', [email]);

await db.query(`SELECT * FROM users WHERE email = '${email}'`);
				

XSS: contextual output encoding в шаблонах, CSP, sanitize rich HTML проверенными библиотеками. Stored XSS в БД; reflected — эхо input; DOM XSS — client-side sinks.

NoSQL injection: валидация типов — отклонять объекты вместо строк; не передавать сырой user object в query builders.

На интервью: prepared statements vs escaping; риск `innerHTML`; ORM не убирает SQLi при raw queries.

Типовые ошибки: LIKE с неэкранированным `%`; user input в HTML email; `$where` в legacy Mongo.

Компромисс — между простотой, производительностью, безопасностью и эксплуатацией: назовите, что оптимизировали и какую цену приняли.

Чеклист:

  • Parameterize SQL; validate shapes для NoSQL.
  • Encode output по sink (HTML, attr, URL, JS).
  • CSP и осознанный sanitize HTML.
  • Аудит raw query и escape в шаблонах.