Security and Design 지침은 공격자가 인앱 결제 구현을 손상시키기가 더 어려워 지도록 다양한 방법을 간략하게 설명합니다. 특히 주목좋은 소프트웨어 엔지니어링 대 보안
는 Proguard와를 통해 난독 경우에도, 그것은 .apk
파일을 리버스 엔지니어링하는 것이 얼마나 쉬운이다. 따라서 모든 샘플 애플리케이션 코드, 특히 "알려진 진입 점 및 종료점"을 수정하는 것이 좋습니다.
은 내가 누락을 발견 한 것은 boolean
반환 정적 Security.verify()
같은 하나의 방법 포장 특정 검증 방법에 대한 참조입니다 : 좋은 디자인 연습 (감소 코드 중복, 재사용, 디버깅 쉽게, 자기 문서화 등 .)하지만 공격자가 지금해야 할 모든 방법은 그 방법을 확인하고 항상 true
...을 반환하는 것입니다. 그래서 내가 얼마나 자주 사용했는지, 지연되었거나 지연되지 않았는지, 무작위로든 아니든 상관없이 간단하게 중요하지 않습니다.
반면 Java에는 C/C++와 같은 매크로가 없으므로 소스 코드 중복을 줄일 수는 있지만 verify()
함수에 대해 하나의 종료점이 없습니다.
그래서 내 질문 :
소위 보안을 위해 잘 알려진 소프트웨어 엔지니어링/코딩 관행과 디자인 사이의 고유 경합이 있습니까? (적어도 자바/안드로이드/안전한 거래의 맥락에서)
지나치게 복잡하게 보일 수있는 "발에 몸을 담그다"와 같은 "보안을위한 디자인"의 부작용을 완화하기 위해 수행 할 수있는 일 더 간단하고 유지 보수가 쉬우 며 디버깅하기 쉬울 수있는 소프트웨어?
이 주제를 더 공부하려면 좋은 자료를 추천 해 줄 수 있습니까?
Maday! 나는 해커가 있다고 생각한다! –
In-app의 경우 Security 클래스가 응용 프로그램 서버 여야한다고 생각합니다. –
코드 난독 화의 가치에 대해 열띤 논쟁이 벌어지고 있습니다. –