Ответ
OWASP (Open Web Application Security Project) — это международная некоммерческая организация, занимающаяся вопросами обеспечения безопасности веб-приложений. Её основная цель — сделать безопасность ПО видимой, чтобы люди и организации могли принимать обоснованные решения о рисках.
Ключевые направления деятельности:
- OWASP Top 10: Стандартный документ для повышения осведомленности о наиболее критических рисках безопасности веб-приложений (например, инъекции, небезопасная конфигурация, XSS).
- Инструменты: Разработка и поддержка бесплатных инструментов для тестирования безопасности, таких как OWASP ZAP (Zed Attack Proxy).
- Документация и руководства: Создание подробных руководств для разработчиков и тестировщиков, например, Application Security Verification Standard (ASVS) и Testing Guide.
Пример: Защита от SQL-инъекций (A03:2021 - Injection)
import sqlite3
# Небезопасный подход: конкатенация строк
user_input = "' OR '1'='1' --"
# query = f"SELECT * FROM users WHERE username = '{user_input}'" # Уязвимо!
# Безопасный подход: параметризованный запрос
conn = sqlite3.connect(':memory:')
cursor = conn.cursor()
cursor.execute("CREATE TABLE users (username text, password text)")
# Используем плейсхолдер '?' для пользовательского ввода
# Драйвер БД сам позаботится о безопасной подстановке значения
cursor.execute("SELECT * FROM users WHERE username = ?", (user_input,))
print("Запрос выполнен безопасно.")
Использование параметризованных запросов (prepared statements) — это фундаментальная практика, рекомендованная OWASP для предотвращения SQL-инъекций, так как данные пользователя передаются отдельно от SQL-команды и не могут её изменить.