Я думаю, что вы здесь запутались просто потому, что обходите правила санитарии вашего собственного приложения - напрямую записываясь в базу данных.
По умолчанию вы никогда не должны "доверять" пользовательскому вводу. Его всегда следует считать потенциально вредоносным.
Одна из причин, по которой вы можете доверять ему, заключается в том, что он предоставляется внутренними пользователями (например, вами!).
ИлиДругая причина, по которой вы можете доверять ей, заключается в том, что вы санировали ее перед ее сохранением - т.е. вы явно заблокировали любой потенциально вредоносный ввод.
Предполагая, что вы "xss_sanatised
"ввод безопасен (что я не могу подтвердить, так как вы не передали код), тогда вы можете доверять вводу пользователя как безопасный. Поэтому можно отображать прямо в браузере.
Однако, если вы принудительно вводите небезопасный ввод в базу данных вручную, «напрямую записывая запросы SQL», то естественно, что вышеприведенное предположение о том, что «ввод безопасен», становится недействительным. Но это «невозможный» сценарий, поэтому я не буду особенно беспокоиться о нем.
Если вы действительно хотите быть вдвойне безопасным в этом, тогда вы можете повторно санировать ввод перед рендерингом. Это. Но это, скорее всего, излишне, на мой взгляд. (В любом случае, вам нужно только санировать его один раз!)
escape_javascript
- это отдельный метод, который не имеет никакого отношения к санации пользовательского ввода. Это не имеет отношения к проблеме, которую вы описываете.
Если вам нужно вызвать escape_javascript
для значения, то сделайте это. Но опять же, поскольку вы не предоставили доступ к коду визуализации представления, я не могу посоветовать, действительно ли он нужен.