Я работаю над приложениями на одной странице, закодированными в JavaScript, которые в настоящее время используют lodash. Я хотел бы, чтобы предотвратить Cross Site Scripting (XSS), используя стандартную библиотеку:Библиотека JavaScript или Esapi, предотвращающая XSS - Escape и Encode ненадежные данные
1) Убегая все ненадежного содержание
2) Кодирование вывода в зависимости от его назначения CSS, HTML, HTMLAttribute JavaScript, JSON и т.д.
Я видел несколько ответов переполнения стека, но они не предоставляют полного решения для канонизации/кодирования в стандартной библиотеке, что я могу написать статический тест, чтобы разработчики использовали библиотеку.
Есть ли esapi или подобная «легкая» библиотека, которую я могу использовать только для JavaScript?
Я видел OWASP Esapi и JQuery плагин кодировщика https://github.com/chrisisbeef/jquery-encoder и энкодер Salesforce https://github.com/salesforce/secure-filters
На данный момент я заинтересован только канонизации ввода и кодирования вывода. Я также ищу что-то актуальное, ухоженное и идеально не зависящее от других библиотек.
Может ли кто-нибудь предложить лучший подход к использованию?
Спасибо за ответ. Рамки? да. Мы находимся в положении, когда у нас есть число как от наследства, так и от других третьих сторон. Не все проекты используют jQuery. Одна из причин, по которой я искал самостоятельную библиотеку. Спасибо за DOMPurify - я буду исследовать, что дальше У вас есть какие-то мысли о том, как я могу использовать «Статический анализ», чтобы попытаться убедиться, что разработчики поступили правильно? – user2684122
Для JavaScript просто кодируйте в формате '\ xNN' для всех не алфавитно-цифровых символов. Таким образом, вам не нужно дважды закодировать кодировку, так как вы не получаете ничего, что требует кодировки HTML. Будьте осторожны с любыми параметрами URL, так как они могут содержать URL-адреса javascript: ', whitelist' http: // 'и' https: // ', если вам нужно вставить динамический контент здесь. – SilverlightFox