Как написать безопасный код на JS
Причины сложности создания безопасного кода.
Причина 1. JavaScript представляет собой язык, который легко интерпретировать. В таком случае компилятор спустя время перестанет помогать при написании оптимального кода. Он перестанет показывать ошибки и неточности, которые легко допустить, учитывая характеристики языка.
Причина 2. Основными характеристиками JavaScript являются:
динамичность;
асинхронность;
слабая типизация.
При таких особенностях языка ошибиться может даже профессиональный и опытный программист.
Причина 3. Сложные и прихотливые возможности JavaScript. Язык предусматривает использование:
прототипов;
функций первого класса;
замыканий.
Смысл использования прототипов состоит в том, чтоб указанные в скрипте объекты могли унаследовать от других объектов (прототипов) изменяемые свойства. То есть, при изменении в JS в среде рантайм некоторых свойств объектов, эти изменения моментально отобразятся на объектах, которые являются производными от этого прототипа.
Использование гибких функций первого класса позволяет создавать, удалять и видоизменять свойства объектов прямо в исполнительной среде рантайм.
Принцип замыкания состоит в том, что при помещении одной функции в другую, данные внешней стают открытыми для внутренней функции. При завершении внешней функции перемены и аргументы остаются актуальны для внутренней.
Эти гибкие и динамичные возможности JavaScript делают написание безопасного кода на JS сложным. При этом программисты неуклонно разрабатывают приложения, используя этот язык при учете указанных динамических характеристик.
Причина 4. Тесный контакт между JavaScript и DOM. Необходимость взаимодействия объясняется потребностью бесперебойного и легкого обновления страницы. В JavaScript интернет-страница представленаобъектной моделью DOM. Она только отображает версии HTML/XML документов. DOM владеет личным программным интерфейсом. Также страницу браузера можно обновить параллельно передачи информации с сервера. При внесении коррективов в DOM изменения отображаются через браузер. Недостатком такого тесного взаимодействия является легкость повреждения участка кода, отвечающего за контакт DOM и JS.
Причина 5. Сложные взаимодействия между событиями в приложении. Кроме событий, задаваемых пользователем (event-driven), существует ряд асинхронных и неуправляемых событий, которые происходят автоматически по установленному времени и по другому принципу. Установить такие неконтролируемые события очень непросто.
Эти причины обуславливают создание сложного для понимания и расшифровки JS кода. Для создания безопасного кода программисты и разработчики используют специальные программы-утилиты:
для тестирования кода на JS;
для статического анализа;
для динамического анализа.
Какой бы тяжелой и затруднительной работа с JS не была, вооружившись терпением и специальными программами, можно обнаружить ошибки и исправить самые затейливый код.
Читать статью на:
Для просмотра ссылки необходимо нажать
Вход или Регистрация