В моем угловом приложении я хочу, чтобы пользователи определяли расширенные выражения фильтра для фильтрации отображаемых объектов. Я смотрел на разные библиотеки, и кажется, что filtrex делает то, что я хочу, но количество выражений, которые оно позволяет, может быть недостаточно для моей цели.Можно ли разрешить пользователям определять угловые выражения?
Я думал просто использовать угловые выражения. Я бы создал новый угловой модуль (чтобы убедиться, что никакие фильтры или переменные rootScope, определенные в моем приложении, не могут стать проблемой) и просто запустите в нем $parse
.
Поскольку выражения фильтра, определенные моими пользователями, будут сохранены в приложении и будут выполняться, когда другие пользователи откроют приложение, крайне важно, чтобы в выражении фильтра не вводился вредоносный код.
Таким образом, мой вопрос: Являются ли угловые выражения безопасными для определения пользователями? Или они позволяют каким-либо образом делать что-то вредное, например, модифицировать dom, перенаправлять на другую страницу, делать HTTP-запросы или что-то еще, о чем я не могу сейчас думать?
Цитирование [Угловая страница безопасности] (https://docs.angularjs.org/guide/security): ** «Если у злоумышленника есть доступ к управлению Угловые шаблоны или выражения, они могут использовать угловое приложение через XSS атаки, независимо от версии **. Другими словами: неплохой план. –
Я не могу сказать ничего конкретного относительно Углового, потому что я незнаком с ним, но если вы позволяете своим пользователям сохранять код, которому подвергаются другие пользователи, он по своей сути небезопасен. Предположите, что ваши пользователи враждебны, злонамеренны и знают, как выявлять и использовать недостатки в системе, которую вы представляете. Тем не менее, не могли бы вы реализовать это как API какого-то типа, таким образом вы можете проверить и проверить серверную сторону. –
@JoeClay: Интересно. Но я все еще задаюсь вопросом, говорят ли они только о том, где область, в которой оцениваются выражения, используется в шаблоне, и в этом случае мне очевидно, как эти выражения могут использоваться плохо. В моем случае выражения будут выполняться в изолированном угловом модуле, и мне интересно, можно ли в этом случае использовать выражения. – cdauth