Безопасно ли передавать объект пользователя в шаблон 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].