2016-07-22 2 views
0

У меня есть приложение node.js как чат, и мне нужно сделать что-то похожее на шаблоны. Таким образом, любой пользователь может создать собственный шаблон, который будет отображаться позже.Проблемы с безопасностью для jsRender внутри процесса node.js

Так у меня есть два пути:

  1. Я могу пойти с регулярной строкой заменить и заменить предустановленные параметры с фактическими значениями

  2. я могу использовать jsRender и просто позволяю пользователю задавать jsRender шаблонов с инвалидами кода.

я более предпочитаю второй подход, поскольку он более гибкий, но я обеспокоен тем, что пользователь может указать некоторое зло Javascript код, который будет выполняться по jsRender на стороне сервера, и это может произойти утечка данных.

Значит, jsRender безопасен для запуска на сервере node.js и позволяет пользователям указывать собственные шаблоны, которые будут выполняться на стороне сервера?

+0

Какие шаблоны, например, html-шаблоны? –

+0

Это больше похоже на запрос json, который может содержать свойства, указанные пользователем –

ответ

2

JsRender предназначен для того, чтобы пользовательские шаблоны не могли запускать произвольный код.

Вы должны, конечно, оставить allowCode опцию настроек на значения по умолчанию, ложь (см http://www.jsviews.com/#settings/allowcode и http://www.jsviews.com/#[email protected]).

Пользователи могут включать в шаблон богатые шаблонные выражения, но они не смогут вставлять код, который обращается к любым переменным (или запускает любые методы), которые находятся за пределами области шаблона. Они могут получить доступ только к контекстуальным данным/модели, использовать стандартные операторы и использовать любые вспомогательные методы и переменные, которые вы (автор) решили предоставить.

+0

Привет, Борис, ваш ответ очень полезен. Спасибо за это и за JsRender! –

+0

Рад, что это помогло ... – BorisMoore

Смежные вопросы