Хорошая разработка программного обеспечения и безопасность

Рекомендации Безопасность и дизайн очень подробно описывают различные методы, чтобы злоумышленнику было труднее скомпрометировать реализацию биллинга в приложении.

Особо следует отметить, насколько легко реконструировать файл .apk , даже если он был запутан через Proguard. Поэтому они даже рекомендуют модифицировать весь пример кода приложения, особенно «известные точки входа и выхода».

Чего мне не хватает, так это любой ссылки на объединение определенных методов проверки в один метод, например статического Security.verify () , который возвращает логическое : Хорошая практика проектирования ( сокращение дублирования кода, возможность повторного использования, упрощение отладки, самодокументирование и т. д.), но все, что нужно сделать злоумышленнику сейчас, - это идентифицировать этот метод и заставить его всегда возвращать true ...Поэтому независимо от того, сколько раз я его использовал, с задержкой или без, случайно или без, это просто не имеет значения.

С другой стороны, в Java нет макросов, как в C / C ++, что позволяет уменьшить дублирование исходного кода, но не имеет единой точки выхода для функции verify () .

Итак, мои вопросы:

Существует ли внутреннее противоречие между хорошо известными методами разработки / программирования программного обеспечения и дизайном для так называемой безопасности? (по крайней мере, в контексте Java / Android / безопасных транзакций)

Что можно сделать, чтобы смягчить побочные эффекты «дизайна для обеспечения безопасности», который кажется «выстрелом себе в ногу» с точки зрения чрезмерного усложнения программного обеспечения это могло быть проще, легче в обслуживании и легче отлаживать?

Можете ли вы порекомендовать хорошие источники для дальнейшего изучения этого предмета?

15
задан Bill The Ape 10 January 2012 в 02:53
поделиться