Input validation + parameterized queries + safe APIs

Данните се валидират според очакван тип/формат; данните и code/queries се държат отделно.

Приоритет P0свързана с 9 атаки

Какво е

Данните се валидират според очакван тип/формат; данните и code/queries се държат отделно.

Как работи

Parameterized queries и safe execution APIs предотвратяват интерпретирането на attacker input като команда.

Injection с едно изречение

Проблемът възниква, когато системата не различава данни от инструкции.

Лош модел

"SELECT * FROM users WHERE name = '" + input + "'"

По-добър модел

Query structure се дефинира отделно, а user input се предава като параметър.

Същият принцип важи извън SQL: shell commands, LDAP filters, templates и XML parsers имат различни безопасни API-та и различни contexts.

Типична грешка

Универсална функция sanitize(input) и убеждението, че веднъж „почистен“ string е безопасен във всеки context. Не е.

Практическа имплементация

  • Allowlist validation.
  • Parameterized DB queries.
  • No shell concatenation.
  • Disable risky XML features.
  • Typed schemas.

Какво НЕ решава

„Sanitize everything“ не е универсален подход. Context-specific controls са нужни.

Предпазва най-силно от

Помага частично срещу

Други в Сигурност на приложения и API