Security and Design दिशा निर्देशों विभिन्न तरीकों रूपरेखा महान लंबाई करने के लिए जाना इसे और अधिक मुश्किल एप्लिकेशन के तहत बिलिंग कार्यान्वयन समझौता करने के लिए एक हमलावर बनाने के लिए।अच्छा सॉफ्टवेयर इंजीनियरिंग बनाम सुरक्षा
विशेष रूप से ध्यान दिया गया है कि .apk
फ़ाइल को रिवर्स-इंजीनियर करना कितना आसान है, भले ही प्रोगार्ड के माध्यम से obfuscated। इसलिए वे सभी नमूना आवेदन कोड को संशोधित करने की भी सिफारिश करते हैं, खासकर "ज्ञात प्रवेश बिंदु और निकास बिंदु"।
क्या मैं याद आ रही खोजने के स्थिर Security.verify()
जो boolean
रिटर्न की तरह एक भी विधि में रैपिंग कुछ सत्यापन विधियों के लिए किसी भी संदर्भ, है: एक अच्छा डिजाइन अभ्यास (कम करने कोड दोहराव, पुन: प्रयोज्य, डिबग करने के लिए आसान, स्वयं कुछ दस्तावेज़ीकृत, आदि ।) लेकिन सभी एक हमलावर अब क्या करने की जरूरत है कि विधि की पहचान करने और यह हमेशा true
वापसी कर ... तो परवाह किए बिना कितनी बार मैं इसे इस्तेमाल किया, देरी या नहीं देरी, बेतरतीब ढंग से है या नहीं, यह बस कोई फर्क नहीं पड़ता है।
दूसरी ओर, जावा C/C++, जो कम करने की अनुमति देता है स्रोत कोड दोहराव में की तरह मैक्रो नहीं है, लेकिन एक verify()
समारोह के लिए एक एकल निकास बिंदु नहीं है।
तो मेरे सवालों का:
वहाँ अच्छी तरह से ज्ञात सॉफ्टवेयर इंजीनियरिंग/कोडिंग प्रथाओं और तथाकथित सुरक्षा के लिए डिजाइन के बीच एक अंतर्निहित विवाद है? (जावा/एंड्रॉइड/सुरक्षित लेनदेन के संदर्भ में कम से कम)
"सुरक्षा के लिए डिज़ाइन" के साइड इफेक्ट्स को कम करने के लिए क्या किया जा सकता है जो अधिक जटिल होने के मामले में "पैर में खुद को शूटिंग" जैसा लगता है सॉफ़्टवेयर जो सरल, अधिक रखरखाव और डीबग करना आसान हो सकता था?
आप आगे इस विषय के अध्ययन के लिए अच्छा स्रोत की सिफारिश कर सकते हैं?
Maday! मुझे लगता है कि हमारे पास हैकर है! –
इन-ऐप के लिए मेरा मानना है कि सुरक्षा वर्ग को आपका एप्लिकेशन सर्वर होना चाहिए। –
कोड obfuscation का मान गर्म बहस है, जो * नहीं * क्या stackoverflow के लिए है। –