অ্যান্ড্রয়েডে অ্যাক্সেস টোকেন এবং গোপনীয় সুরক্ষার সাথে কীভাবে সংরক্ষণ করবেন?


123

আমি গুগল থেকে মেল এবং পরিচিতি আনতে oAuth ব্যবহার করতে যাচ্ছি। অ্যাক্সেস টোকেন এবং গোপনীয়তা পেতে আমি প্রত্যেকবার ব্যবহারকারীকে লগ ইন করতে বলতে চাই না। যা আমি বুঝতে পেরেছি সেগুলি থেকে আমার অ্যাপ্লিকেশনটি ডেটাবেসে বা সংরক্ষণ করা দরকার SharedPreferences। তবে আমি এটির সাথে সুরক্ষার দিকগুলি নিয়ে কিছুটা উদ্বিগ্ন। আমি পড়েছি যে আপনি টোকেনগুলি এনক্রিপ্ট করতে এবং ডিক্রিপ্ট করতে পারবেন তবে আক্রমণকারীর পক্ষে কেবল আপনার এপিপি এবং ক্লাসগুলি ডিকম্পাইল করে এনক্রিপশন কীটি পাওয়া সহজ।
অ্যান্ড্রয়েডে এই টোকেনগুলি সুরক্ষিতভাবে সংরক্ষণ করার সর্বোত্তম পদ্ধতি কোনটি?


1
আমি কীভাবে গ্রাহক কী এবং গোপনীয় জিনিস সংরক্ষণ করব (এগুলিকে হার্ডকন্ডিং সুরক্ষিত করা হয় না)? আমার তাদের অ্যাক্সেসটোকেন এবং গোপনীয়তার জন্য অনুরোধ করা দরকার .. অন্যান্য বিদ্যমান অ্যাপগুলি ওআউথ ব্যবহার করে কীভাবে তা করে? হুম অবশেষে ওউথের সাথে, আপনারা আমার জন্য আরও অনেক সুরক্ষা সমস্যার যত্ন নিতে হবে .... আমাকে গ্রাহক টোকেন / গোপনীয়ভাবে সুরক্ষিত রাখা এবং অ্যাক্সেসস্টোকেন এবং গোপন রাখা প্রয়োজন .... অবশেষে এটি আরও সহজ হবে না কেবল ব্যবহারকারীর ব্যবহারকারীর নাম / পাসওয়ার্ড এনক্রিপ্ট করা সংরক্ষণ করুন? ... শেষের দিকে, পরে কি ভাল হয় না? আমি এখনও দেখতে পাচ্ছি না যে ওউথ কীভাবে আরও ভাল ...
ইয়াহমান

আপনি কি আমাকে বলতে পারবেন .. কোন ফাইল অ্যাক্সেস টোকেন সঞ্চয় করে ?? আমি অ্যান্ড্রয়েডে নতুন এবং আমি নমুনা প্লাস অ্যাপ্লিকেশন চালানোর চেষ্টা করেছি anywhere তবে আমি এটি কোথাও খুঁজে পাচ্ছি না [গুগলআউথ ইউটি.বিট টোকেন () পদ্ধতি।]
অভিষেক কৌশিক

উত্তর:


118

সেগুলি ভাগ করে নেওয়া পছন্দ হিসাবে সংরক্ষণ করুন । এগুলি ডিফল্টভাবে ব্যক্তিগত হয় এবং অন্যান্য অ্যাপ্লিকেশন সেগুলি অ্যাক্সেস করতে পারে না। মূলযুক্ত ডিভাইসগুলিতে, ব্যবহারকারী যদি স্পষ্টভাবে কিছু অ্যাপ্লিকেশনগুলিতে অ্যাক্সেসের অনুমতি দেয় যা সেগুলি পড়ার চেষ্টা করছে, অ্যাপ্লিকেশন সেগুলি ব্যবহার করতে সক্ষম হতে পারে তবে আপনি এটির বিরুদ্ধে রক্ষা করতে পারবেন না। এনক্রিপশন হিসাবে, আপনাকে ব্যবহারকারীকে প্রতিবার ডিক্রিপ্ট পাসফ্রেজ প্রবেশ করতে হবে (এভাবে ক্যাশেড শংসাপত্রগুলির উদ্দেশ্যকে পরাস্ত করা), অথবা কোনও ফাইলের কীটি সংরক্ষণ করতে হবে এবং আপনি একই সমস্যা পেতে পারেন।

প্রকৃত ব্যবহারকারীর পাসওয়ার্ডের পরিবর্তে টোকেন সংরক্ষণ করার কয়েকটি সুবিধা রয়েছে:

  • তৃতীয় পক্ষের অ্যাপ্লিকেশনগুলির পাসওয়ার্ড জানার প্রয়োজন নেই এবং ব্যবহারকারী নিশ্চিত হতে পারে যে তারা এটি কেবলমাত্র মূল সাইটে (ফেসবুক, টুইটার, জিমেইল ইত্যাদি) প্রেরণ করবে)
  • এমনকি কেউ টোকেন চুরি করলেও তারা পাসওয়ার্ডটি দেখতে পাবেন না (যা ব্যবহারকারী অন্যান্য সাইটেও ব্যবহার করছেন)
  • টোকেনগুলির সাধারণত একটি জীবনকাল থাকে এবং একটি নির্দিষ্ট সময়ের পরে শেষ হয়
  • যদি আপনি সন্দেহ করেন যে তাদের আপস করা হয়েছে তবে টোকেনগুলি বাতিল করা যেতে পারে

1
উত্তর জন্য THX! তবে কীভাবে আমি জানব যে আমার গ্রাহক কীটি আপস করা হয়েছে? হ্যাঁ এটি বলা শক্ত হবে .. ঠিক আছে অ্যাক্সেস টোকেন এবং গোপনীয়তা সংরক্ষণ করার বিষয়ে, ঠিক আছে আমি তাদের ভাগাভাগি করে সংরক্ষণ করেছি এবং সেগুলি এনক্রিপ্ট করছি তবে কীভাবে গ্রাহক কী এবং গোপনীয়তা সম্পর্কে? আমি সেগুলি পূর্বনির্ধারিতগুলিতে সঞ্চয় করতে পারি না (প্রথমে অংশীদারি করে এটিকে সংরক্ষণ করার জন্য কোডটিতে আমি গ্রাহক কী এবং গোপনীয়ভাবে স্পষ্টভাবে লিখতে হবে) .. আপনি কী বলতে চাইছেন তা বুঝতে পারছেন না।
ইয়াহমান

2
আপনাকে অ্যাপটিকে কিছুটা (কিছুটা) অবহেলিত উপায়ে রেখে দিতে হবে, কারণ এগুলি দ্রবীভূত হওয়ার পরে তাৎক্ষণিকভাবে দৃশ্যমান হয় না বা কী এবং গোপনীয়তা সহ আপনার নিজস্ব লেখক প্রক্সি ওয়েব অ্যাপ ব্যবহার করতে হবে। এগুলিকে অ্যাপে স্থাপন করা স্পষ্টতই সহজ, এবং যদি মনে হয় যে কারও দ্বারা আপনার অ্যাপ্লিকেশনটি ফাটানোর চেষ্টা করা ঝুঁকি যথেষ্ট পরিমাণে কম, তবে এই পদ্ধতিটি গ্রহণ করুন। বিটিডাব্লু, উপরের পয়েন্টগুলি ব্যবহারকারীর পাসওয়ার্ডের জন্য। আপনি যদি জানতে পারেন যে আপনার গ্রাহক কী / গোপনীয়তার সাথে আপস করা হয়েছে তবে আপনি সেগুলিও বাতিল করতে পারেন (এটি অবশ্যই আপনার অ্যাপ্লিকেশনটি ভেঙে দেবে)।
নিকোলে এলেনকোভ

1
@ নিকোলেএলেঙ্কভ: আপনি লিখেছেন 'এনক্রিপশন হিসাবে, আপনাকে ব্যবহারকারীকে প্রতিবার ডিক্রিপ্ট পাসফ্রেজ প্রবেশ করতে হবে (এইভাবে শংসাপত্রগুলির ক্যাশে করার উদ্দেশ্যটি পরাস্ত করা) বা কোনও ফাইলের কীটি সংরক্ষণ করতে হবে এবং আপনি একই সমস্যা পেতে পারেন।' । এনক্রিপশন কীভাবে কাজ করে তা অন্তর্দৃষ্টি পেতে যদি ক্র্যাকাররা আপনার অ্যাপটিকে উল্টে দেয় তবে কী হবে? আপনার প্রতিরক্ষা ভঙ্গ হতে পারে। দেশীয় কোড ব্যবহার করে এই জাতীয় তথ্য (টোকেন, এনক্রিপশন ...) সঞ্চয় করা কি সেরা অনুশীলন?
anhldbk

1
যদি অ্যাপ্লিকেশন ডেটা সাফ হয়ে যায়, তবে রিফ্রেশ টোকনটি হারিয়ে যায়, যা সম্ভবত ব্যবহারকারী যা চেয়েছিলেন তা নয়।
rd

1
এখনকার দিনে টোকেনগুলি সঞ্চয় করার এটি সর্বোত্তম উপায় নয়!
রাহুল রাস্তোগি

19

আপনি এগুলি অ্যাকাউন্টম্যানেজারে সঞ্চয় করতে পারেন । এই ছেলেদের মতে এটি সেরা অনুশীলন হিসাবে বিবেচিত হয়।

এখানে চিত্র বর্ণনা লিখুন

এখানে সরকারী সংজ্ঞা:

এই শ্রেণীর ব্যবহারকারীর অনলাইন অ্যাকাউন্টগুলির একটি কেন্দ্রীভূত রেজিস্ট্রি অ্যাক্সেস সরবরাহ করে। ব্যবহারকারী একাউন্টে শংসাপত্রগুলি (ব্যবহারকারীর নাম এবং পাসওয়ার্ড) একবার প্রবেশ করে, "এক-ক্লিক" অনুমোদনের মাধ্যমে অ্যাপ্লিকেশনগুলিকে অনলাইন সংস্থানগুলিতে অ্যাক্সেস দেয়।

কীভাবে অ্যাকাউন্টম্যানেজার ব্যবহার করবেন সে সম্পর্কে বিস্তারিত গাইডের জন্য:

তবে, শেষে অ্যাকাউন্টম্যানেজার কেবল আপনার টোকেনকে একটি সরল পাঠ্য হিসাবে সঞ্চয় করে। সুতরাং, আমি আপনার গোপনীয়তাগুলিকে অ্যাকাউন্টম্যানেজারে সঞ্চয় করার আগে এনক্রিপ্ট করার পরামর্শ দেব। আপনি বিভিন্ন এনক্রিপশন লাইব্রেরি যেমন এইএসক্রিপ্ট বা এইএসক্রিপ্টো ব্যবহার করতে পারেন

আরেকটি বিকল্প হ'ল লুকোচুরি লাইব্রেরি ব্যবহার করা । এটি ফেসবুকের পক্ষে যথেষ্ট নিরাপদ এবং অ্যাকাউন্টম্যানেজারের চেয়ে ব্যবহার করা আরও সহজ। গোপন ফাইলটি গোপন ব্যবহার করে সংরক্ষণ করার জন্য এখানে একটি কোড স্নিপেট।

byte[] cipherText = crypto.encrypt(plainText);
byte[] plainText = crypto.decrypt(cipherText);

2
গোপন টিপস যে গোপন। ব্যবহার করা খুব সহজ দেখাচ্ছে। এবং অনেক ব্যবহারের ক্ষেত্রে।
লেগোস

লিঙ্কের মাধ্যমে গোপন খুঁজে পাওয়া যায়নি। এটি নিষ্ক্রিয় করা যেতে পারে
11 ই

9

SharedPreferences নয় কোনো নিরাপদ স্থানে নিজেই। মূলযুক্ত ডিভাইসে আমরা সহজেই সমস্ত অ্যাপ্লিকেশনগুলির SharedPreferencesces xML এর পড়তে এবং সংশোধন করতে পারি। সুতরাং টোকেনগুলির অপেক্ষাকৃত ঘন ঘন মেয়াদ শেষ হওয়া উচিত। এমনকি প্রতি ঘন্টা যদি একটি টোকেনের মেয়াদ শেষ হয়ে যায়, তবুও নতুন টোকেনগুলি ভাগ করা পছন্দগুলি থেকে চুরি করা যেতে পারে। অ্যান্ড্রয়েড কীস্টোর দীর্ঘমেয়াদী স্টোরেজ এবং ক্রিপ্টোগ্রাফিক কীগুলি পুনরুদ্ধারের জন্য ব্যবহার করা উচিত যা আমাদের টোকেনগুলিকে এনক্রিপ্ট করতে ব্যবহার করা হবে যেমন Sha কীগুলি কোনও অ্যাপ্লিকেশন প্রক্রিয়ার মধ্যে সংরক্ষণ করা হয় না, তাই তাদের সাথে আপস করা কঠিন

কোনও জায়গার চেয়ে আরও প্রাসঙ্গিক হ'ল তারা কীভাবে নিজেরাই সুরক্ষিত থাকতে পারে যেমন ক্রিপ্টোগ্রাফিক স্বাক্ষরিত স্বল্প-জীবিত JWT গুলি ব্যবহার করে, অ্যান্ড্রয়েড কীস্টোর ব্যবহার করে তাদের এনক্রিপ্ট করে এবং একটি সুরক্ষিত প্রোটোকল দিয়ে তাদের প্রেরণ করা


9
তাহলে আমরা সেগুলি কোথায় রাখতে পারি?
মিলিন্দ মেভাদা

3
  1. আপনার অ্যান্ড্রয়েড স্টুডিওর প্রকল্প ফলক থেকে, "প্রকল্প ফাইলগুলি" নির্বাচন করুন এবং আপনার প্রকল্পের মূল ডিরেক্টরিতে "কীস্টোর.প্রেপার্টি" নামে একটি নতুন ফাইল তৈরি করুন।

এখানে চিত্র বর্ণনা লিখুন

  1. "Keystore.properties" ফাইলটি খুলুন এবং ফাইলটিতে আপনার অ্যাক্সেস টোকন এবং গোপনীয় সংরক্ষণ করুন।

এখানে চিত্র বর্ণনা লিখুন

  1. এখন আপনার অ্যাপ্লিকেশন মডিউলের বিল্ড . gradle ফাইলটিতে অ্যাক্সেস টোকেন এবং সিক্রেট পড়ুন load তারপরে আপনার অ্যাক্সেস টোকেন এবং সিক্রেটের জন্য আপনার বিল্ডকনফিগ ভেরিয়েবলটি সংজ্ঞায়িত করতে হবে যাতে আপনি নিজের কোড থেকে সরাসরি এগুলি অ্যাক্সেস করতে পারেন। আপনার বিল্ড.gradle নীচের মত দেখতে পারে:

    ... ... ... 
    
    android {
        compileSdkVersion 26
    
        // Load values from keystore.properties file
        def keystorePropertiesFile = rootProject.file("keystore.properties")
        def keystoreProperties = new Properties()
        keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
    
        defaultConfig {
            applicationId "com.yourdomain.appname"
            minSdkVersion 16
            targetSdkVersion 26
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    
            // Create BuildConfig variables
            buildConfigField "String", "ACCESS_TOKEN", keystoreProperties["ACCESS_TOKEN"]
            buildConfigField "String", "SECRET", keystoreProperties["SECRET"]
        }
    }
  2. আপনি নিজের কোডটিতে আপনার অ্যাক্সেস টোকেন এবং গোপনীয়তা ব্যবহার করতে পারেন:

    String accessToken = BuildConfig.ACCESS_TOKEN;
    String secret = BuildConfig.SECRET;

এইভাবে আপনার প্রজেক্টের অভ্যন্তরে সরল পাঠ্যে অ্যাক্সেস টোকেন এবং সিক্রেটের দরকার নেই। সুতরাং কেউ যদি আপনার এপিএকে ডিকম্পিল করে তবে আপনি কোনও বাহ্যিক ফাইল থেকে লোড করার কারণে তারা কখনও আপনার অ্যাক্সেস টোকেন এবং গোপনীয়তা পাবে না।


1
দেখে মনে হচ্ছে হার্ড কোডিংয়ের পরিবর্তে কোনও বৈশিষ্ট্য ফাইল তৈরি করার কোনও পার্থক্য নেই।
জাজান

আমি রান টাইমে টোকেন লিখতে চাই আমার অ্যাপ্লিকেশনটি খুললে প্রতিবার পরিবর্তিত হওয়া আমার টোকেন হতে পারে।
রেহান সরওয়ার

1
এটিআইপি অ্যাক্সেস টোকেনের মতো কিছু টোকেন সঞ্চয় করার খুব ভাল উপায়। যদি আপনি ব্যবহারকারীর শংসাপত্রগুলি সঞ্চয় করতে চান তবে এনডিকে আরও ভাল উপায়।
এরিক

6
আপনার অ্যাপ্লিকেশনটিতে সংবেদনশীল তথ্য সংরক্ষণের ক্ষেত্রে আপনার কী করা উচিত তা একেবারেই নয়! এমনকি যদি সংগ্রহস্থলটিতে এই পদ্ধতির ব্যবহার করে ডেটা না থাকে (ডেটাটি বিল্ড প্রক্রিয়াতে সংযোজন করা হয়) এটি একটি বিল্ডকনফিগ ফাইল উত্পন্ন করে যা সাধারণ পচানোর পরে দেখার জন্য সরল পাঠ্যে টোকেন / গোপন রয়েছে।
হার্ফান

-1

ভাল আপনি দুটি বিকল্প অনুসরণ করে অ্যাক্সেস টোকেন নিরাপদ করতে পারেন।

  1. বিপরীত হবে না যে অ্যান্ড্রয়েড কীস্টোর আপনার অ্যাক্সেস টোকেন সংরক্ষণ করুন।
  2. এমন কিছু গণনা সহ এনডিকে ফাংশন ব্যবহার করুন যা আপনার টোকেন এবং সি ++ কোড দিয়ে এনডিকে সংরক্ষণ করবে যা বিপরীত করা খুব শক্ত
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.