Встречается на собеседованиях • сегодня

От каких атак нужно защищать параметры запроса в Django, FastAPI и других фреймворках

Веб-приложения нужно защищать от нескольких типов атак при работе с параметрами запроса:

  1. SQL-инъекции - использование ORM или параметризованных запросов:
python
# Django (безопасно)
User.objects.filter(username=request.GET['username'])

# Небезопасно (сырой SQL)
cursor.execute(f"SELECT * FROM users WHERE username = '{request.GET['username']}'")
  1. XSS (межсайтовый скриптинг) - экранирование вывода:
python
# Django шаблоны автоматически экранируют
{{ user_input }}

# FastAPI/Jinja2
from markupsafe import escape
escape(user_input)
  1. CSRF - Django имеет встроенную защиту через middleware, в FastAPI нужно использовать токены:
python
# Django (включено по умолчанию)
# FastAPI пример:
from fastapi.security import CSRFProtect
csrf_protect = CSRFProtect()
  1. Параметрная тампонация - валидация всех входных данных:
python
# Pydantic в FastAPI
class User(BaseModel):
    id: int
    name: str = Field(max_length=100)
  1. Mass Assignment - явное указание разрешенных полей:
python
# Django
form = UserForm(request.POST, instance=user)
form.save()

# FastAPI
user.update(**user.dict(include={'name', 'email'}))

Всегда используйте встроенные механизмы фреймворков для защиты и валидации данных.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы