Безопасно ли {{portfolio.description|safe}}?
У меня сайт проект на django в странице html следующий код:
<strong>{{portfolio.begin|safe}} - {{portfolio.finish|safe}}:</strong> {{portfolio.location|safe}}
<strong>Должность:</strong> {{portfolio.specialization|safe}}
<strong>Дополнительная информация:</strong> {{portfolio.responsibilities|safe}}
<strong>Достижения:</strong> {{portfolio.progress|safe}}
Решил заняться безопасностью веб сервера, и вычитал, что так заполнять информацию из базы небезопасно. Безопасно ли использовать такие параметры? Как лучше передавать параметры из базы в html???
Весь код тут: https://github.com/it38dato/MyPortfolio/blob/main/dato138it/david138it/index.html
Исходя из документаци,
safe
помечает значение, как уже безопасное.
Значит система шаблонов не будет дальше делать ее безопасной с помощью autoescape
, а это дыра.
Чтобы понять, что делать в конкретном случае, нужно разобраться, что у вас хранится -- текст или хтмл. И как оно туда попало и т. д.
Есть 2 варианта:
safe
нужно писать, если в базе лежит HTML полученный из надежного источника.safe
нельзя писать, если в базе лежит текст без разметки.
Если перепутать эти варианты, то можем получить ерунду на экране.