Какой лучший инструмент для проверки безопасности Javascript?

Что-то, что может, по крайней мере, сканировать пакет .js файлов, которые ищут выражения eval и другие сомнительные коды. Может быть, только шаблон регулярного выражения будет делать это, но я бы хотел найти более сложный (и регулярно поддерживаемый) инструмент.

Ответы

Ответ 1

старая тема, но новый инструмент: ScanJS, разработанный mozilla для проверки безопасности Firefox. https://github.com/mozilla/scanjs

Ответ 2

Вы пробовали Douglas Crockford JSLint? Однако, несмотря на то, что он не сканирует ваш код на проблемы с безопасностью, он предупреждает вас об операторах "eval". OTOH, Predrag Tomasevic написал JavaScript Verifier на основе JSLint, который может быть интегрирован с Visual Studio (подробнее об этом здесь).

Ответ 3

Я не знаю никаких инструментов Open Source, которые проводят статический анализ JavaScript.

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

В JavaScript много проблем с безопасностью, которые полагаются на взаимодействие с DOM. Grepping для eval() может работать, но он пропустит другие точки выполнения, такие как hrefs или обработчики событий, которые могут быть атакованы, например. href= javascript: xss или onFoo = xss. Вам действительно нужен инструмент, который имеет дело с JavaScript и DOM, а не только с консолью JavaScript.

IBM/Watchfire недавно выпустила статью о JavaScript-анализаторе, которую они создали. В документе приводится подробная информация о результатах, а не о реализации. Коммерческий инструмент может быть не таким, как вы хотите, но документ должен помочь пролить больше света на проблемы, связанные с этим.