Wytyczne Security and Design dokładają wszelkich starań, aby utrudnić atakującemu wdrożenie zasad fakturowania w aplikacji.Dobra inżynieria oprogramowania a bezpieczeństwo
Szczególnie zauważalne jest to, jak łatwo można odwzorować plik .apk
, nawet jeśli jest on zaciemniony przez Proguard. Dlatego nawet zalecają modyfikację wszystkich przykładowych kodów aplikacji, szczególnie "znanych punktów wejścia i punktów wyjścia".
Co znajdę brakuje wszelkie odniesienia do owijania pewnych metod weryfikacji w jednej metody, jak statycznej Security.verify()
która zwraca boolean
: Dobrą praktyką projektowania (kod zmniejszenie powielanie, wielokrotnego użytku, łatwiejsza do debugowania, samodokumentujące, etc .) ale wszystko, co atakujący musi teraz zrobić, to zidentyfikować tę metodę i sprawić, by zawsze zwracała true
... Tak więc bez względu na to, ile razy jej użyłem, opóźniłem lub nie opóźniłem, losowo lub nie, po prostu nie ma to znaczenia.
Z drugiej strony Java nie ma makr takich jak w C/C++, co pozwala ograniczyć duplikację kodu źródłowego, ale nie ma jednego punktu wyjścia dla funkcji verify()
.
więc moje pytania:
Czy istnieje nieodłączne rywalizacji pomiędzy znanymi inżynierii oprogramowania/praktyk kodowania i projektowania dla tzw zabezpieczeń? (w kontekście Java/Android/co najmniej bezpieczne transakcje)
Co można zrobić, aby złagodzić skutki uboczne "projektu dla bezpieczeństwa", który wydaje się "strzelanie sobie w stopę" pod względem nadmiernego komplikowania oprogramowanie, które mogłoby być prostsze, łatwiejsze w utrzymaniu i łatwiejsze do debugowania?
Czy możesz polecić dobre źródła do dalszego studiowania tego przedmiotu?
Maday! Myślę, że mamy hakera! –
Dla aplikacji w aplikacji uważam, że klasa zabezpieczeń musi być serwerem aplikacji. –
Wartość zaciemniania kodu jest gorąco dyskutowana, co oznacza, że * nie * to, za co jest stackoverflow. –