Руководство для программиста на Java: 75 рекомендаций по написанию надежных и защищенных программ - Лонг Фрэд, Мохиндра Дхрув, Сикорд Роберт С.
- Автор: ArtAgeLess
В этой книге даются конкретные рекомендации для программирующих на Java. Следуя этим рекомендациям, они смогут разрабатывать более надежные системы, устойчивые к нарушению защиты. Эти рекомендации охватывают широкий спектр программных продуктов, разрабатываемых на Java для таких устройств, как ПК, игровые приставки, мобильные телефоны, планшетные компьютеры, бытовая техника и автомобильная электроника.
Программирующие на любом языке должны придерживаться определенного ряда рекомендаций, касающихся управления структурами их программ, а самое главное — того, что указано в определении языка программирования. И это в равной степени относится к Java. Для разработки надежных и безопасных программ на Java программистам требуется дополнительная помощь, помимо того, что указано в спецификации языка программирования Java (JLS) [JLS 2013]. В состав Java входят языковые средства и прикладные программные интерфейсы (API), которые можно легко употребить неправильно, и поэтому требуются рекомендации, помогающие обойти скрытые препятствия на пути к созданию надежных программ на Java.
Для того чтобы программа была надежной, она должна работать во всех случаях и вопреки любым данным, которые могут быть введены. Любая нетривиальная программа не может избежать совершенно неожиданно возникающей ситуации в ходе ее выполнения или при вводе данных, в результате чего возникают ошибки. Когда же возникают ошибки, очень важно ограничить их воздействие на программу, и для этого лучше всего локализовать ошибку и обработать ее как можно скорее. Стремясь предусмотреть неожиданные ситуации, которые могут возникнуть при вводе данных или в ходе выполнения программы, одни программисты могут выгодно воспользоваться опытом других, приняв на вооружение безопасный стиль программирования.
Эта книга посвящена вопросам программирования на платформе Java SE 7 и содержит рекомендации для написания безопасного кода с помощью прикладного программного интерфейса API для версии Java SE 7. В спецификации на язык программирования Java в версии Java SE 7 [JLS 2013] регламентируется поведение этого языка, и поэтому она послужила основным источником для разработки рекомендаций, представленных в данной книге.
В стандарты на такие традиционные языки программирования, как С и C++, включается описание неопределенных, непредусмотренных и определенных в реализации видов поведения, которые могут привести к появлению уязвимостей, когда программист делает неправильные предположения относительно переносимости этих видов поведения. Напротив, в спецификации на Java подобные виды поведения определены более полно, поскольку язык программирования Java разработан как независимый от конкретной платформы. Но и в этом случае некоторые виды поведения отдаются на откуп реализаторам виртуальной машины Java (JVM) или компилятора Java. Именно такие языковые особенности учитываются в представленных здесь рекомендациях, предлагающих реализаторам решение насущных вопросов и помогающих программистам правильно оценить и уяснить присущие языку ограничения, чтобы найти способы их преодоления.
Для того чтобы писать надежные и безопасные программы, недостаточно уделить внимание вопросам одного только языка программирования. Иногда вопросы проектирования, возникающие при обращении к прикладным программным интерфейсам API языка Java, приводят к тому, что эти интерфейсы становятся не рекомендуемые к дальнейшему применению. А порой интерфейсы API или документация на них интерпретируются программистами неверно. На подобные неясности в интерфейсах API указывается в представленных здесь рекомендациях, где обращается внимание на правильное их применение. Эти рекомендации дополняются характерными образцами ошибочного проектирования или неверно выбранного стиля программирования.
Ядро языка Java и его расширения в виде прикладных интерфейсов API, а также виртуальная машина JVM предоставляют ряд средств для обеспечения безопасности, в том числе диспетчер защиты и контроллер доступа, шифрование, автоматическое управление памятью, строгий контроль типов и проверку достоверности байт-кода. Эти средства обеспечивают достаточную безопасность для большинства приложений, но при условии, что они правильно используются, что очень важно. В представленных здесь рекомендациях указываются скрытые препятствия и предупреждаются опасности, связанные с архитектурой системы безопасности, а также делается акцент на правильную ее реализацию. Придерживаясь этих рекомендаций, можно уберечься от многих программных ошибок, используемых для нарушения защиты с целью отказать в обслуживании, организовать утечку информации или намеренно превысить полномочия.
Руководство для программиста на Java: 75 рекомендаций по написанию надежных и защищенных программ - Лонг Фрэд, Мохиндра Дхрув, Сикорд Роберт С. | ООО «И.Д. Вильямс» | 2014 год | ISBN 978-5-8459-1897-0 (рус.), ISBN 978-0-321-93315-7 (англ.)
Смотрите также другие материалы: