Безопасно ли передавать объект пользователя в шаблон Django?

У меня есть модель пользователя, которая хранит все данные пользователя, например, имя пользователя, пароль, любимый_цвет и т.д. Я передаю данные в шаблон следующим образом

TemplateView
    def get_context_data(self, **kwargs):
        data = super().get_context_data(**kwargs)
        user_object = User.objects.get(email=self.get_object())
        data['user_data'] = user_object
        return data

и отображаю неконфиденциальные данные на странице

<span class="favorite_color">{{ user_data.favorite_color }}</span>

Я задаюсь вопросом, безопасно ли передавать объект User на страницу, но не отображать приватные данные через шаблон (например, {{user_data.password}}). Нужно ли мне передавать только конкретные данные, которые я хочу использовать на странице? Или я могу передать весь объект пользователя?

Давайте предположим, что разработчик не совершает никаких ошибок.

Мне интересно, безопасно ли передавать объект User на страницу, но не отображать приватные данные через шаблон (например, {{user_data.password}}) Нужно ли мне отправлять только конкретные данные, которые я хочу использовать на странице? Или я могу отправить весь объект пользователя?

Да, это безопасно, или, по крайней мере, если сам шаблон не раскрывает конфиденциальные данные.

Шаблоны отображаются на стороне сервера . Другими словами, браузер не видит переменных, он никогда не видит {{ user.favorite_color }}, шаблон заменяет их на purple, и поэтому браузер не знает, откуда взялась purple: возможно, в самом шаблоне упоминается фиолетовый цвет, или это результат запроса к базе данных, или что-то еще. Но он видит только purple.

Beware that if you expose data through an API, then you need to be very careful what fields you expose. Furthermore don't allow filtering or ordering or exposing arbitrary data [django-antipatterns].

Вернуться на верх