ফায়ারবেস অ্যাপিকি জনসমক্ষে প্রকাশ করা কি নিরাপদ?


436

ফায়ারবেস ওয়েব-অ্যাপ্লিকেশন নির্দেশিকা সূত্রে জানা গেছে যে ফায়ারবেসapiKey আরম্ভ করার জন্য আমার দেওয়া এইচটিএমএলতে দেওয়া উচিত :

// TODO: Replace with your project's customized code snippet
<script src="https://www.gstatic.com/firebasejs/3.0.2/firebase.js"></script>
<script>
  // Initialize Firebase
  var config = {
    apiKey: '<your-api-key>',
    authDomain: '<your-auth-domain>',
    databaseURL: '<your-database-url>',
    storageBucket: '<your-storage-bucket>'
  };
  firebase.initializeApp(config);
</script>

এটি apiKeyকরে প্রতিটি দর্শনার্থীর কাছে প্রকাশ করা হয়। এই কীটির উদ্দেশ্য কী এবং এটি সত্যই প্রকাশ্যে বোঝানো উচিত?


1
আমি মনে করি আপনি যতক্ষণ না ফায়ারবেস আথ এবং ফায়ারবেস ডাটাবেস বিধিগুলি সেট আপ করবেন আপনি সেই তথ্য সর্বজনীনভাবে দিতে পারেন।
abbaf33f

ব্যবহারকারী ক্রিস্টোফ কুইন্টার্ড ফায়ারবেস এপিআইয়ের সুরক্ষা সম্পর্কিত অতিরিক্ত তথ্যের সাথে একটি খুব দরকারী নিবন্ধে একটি লিঙ্ক যুক্ত করেছিলেন, তাই আমি এটি এখানে পুনরায় পোস্ট করছি: javebratt.com/hide-firebase-api (মন্তব্যটি অন্য কোনও ব্যবহারকারীর সাথে সংযুক্ত হওয়ার কারণে এটি অদৃশ্য হয়ে যাবে) উত্তর যা খারাপ মানের কারণে মুছে ফেলার জন্য চিহ্নিত করা হয়েছে)
অলিভার শ্যাফেল্ড

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

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

1
আমি মনে করি না যে আপনার রেফারার শ্বেতলিস্ট থেকে লোকালহোস্ট অপসারণ পরীক্ষা আরও শক্ত করে তোলা ছাড়া কিছু করতে যাচ্ছে। এই কনফিগারেশনটি কোনও আইপি শ্বেত তালিকার মতো নয়; এটিকে আরও একটি সিওআরএস কনফিগের মতো ভাবুন। ফায়ারবেস যেভাবে কাজ করে তা হ'ল সেই APIগুলির রুটগুলি সরাসরি ক্লায়েন্টদের কাছ থেকে ডাকা হয়, তারা প্রক্সড হয় না। এজন্য আপনার ওয়েবপৃষ্ঠায় এপিআই কী প্রয়োজন। কোনও খারাপ অভিনেতা যদি পোস্টম্যান থেকে আপনার এপিআই রুটগুলিতে কল করতে চায় তবে আপনার রেফারার শ্বেত তালিকাটি তাদের থামাতে যাচ্ছে না। এটি কেবলমাত্র অন্যান্য সার্বজনীন সাইটগুলিকে আপনার সার্ভারগুলি ছড়িয়ে দেওয়া থেকে বিরত রাখতে কার্যকর।
forresthopkinsa

উত্তর:


449

এই কনফিগারেশন স্নিপেটের এপিকি কেবলমাত্র Google সার্ভারগুলিতে আপনার ফায়ারবেস প্রকল্পটি সনাক্ত করে। এটি জানা কারও পক্ষে সুরক্ষা ঝুঁকি নয়। প্রকৃতপক্ষে, আপনার ফায়ারবেস প্রকল্পের সাথে তাদের ইন্টারঅ্যাক্ট করার জন্য তাদের এটি জানা দরকার। এই একই কনফিগারেশন ডেটা প্রতিটি আইওএস এবং অ্যান্ড্রয়েড অ্যাপে অন্তর্ভুক্ত রয়েছে যা ফায়ারবেসকে তার ব্যাকএন্ড হিসাবে ব্যবহার করে।

যে অর্থে এটা খুব ডাটাবেসের URL টি অনুরূপ যে শনাক্ত ব্যাক এন্ড একই স্নিপেট আপনার প্রোজেক্টের সাথে সংশ্লিষ্ট ডাটাবেসের: https://<app-id>.firebaseio.com। এটি কেন সুরক্ষা ঝুঁকি নয় এই প্রশ্নটি দেখুন: ফায়ারবেস ডেটা সংশোধনকে কীভাবে সীমাবদ্ধ করবেন? কেবলমাত্র অনুমোদিত ব্যবহারকারীগণ ব্যাক-এন্ড পরিষেবাদি অ্যাক্সেস করতে পারবেন তা নিশ্চিত করতে ফায়ারবেসের সার্ভার সাইড সিকিউরিটি রুলস ব্যবহার সহ।

যদি আপনি কীভাবে আপনার ফায়ারবেস ব্যাকএন্ড পরিষেবাদিতে সমস্ত ডেটা অ্যাক্সেস সুরক্ষিত করবেন তা শিখতে চান, তবে ফায়ারবেস সুরক্ষা নিয়মের ডকুমেন্টেশনটি পড়ুন ।


আপনি যদি এই কনফিগারেশন ডেটাটিকে সংস্করণ নিয়ন্ত্রণে প্রতিশ্রুতি দেওয়ার ঝুঁকি হ্রাস করতে চান তবে ফায়ারবেস হোস্টিংয়ের এসডিকে অটো-কনফিগারেশন ব্যবহার করার বিষয়টি বিবেচনা করুন । কীগুলি এখনও একই ফর্ম্যাটে ব্রাউজারে শেষ হবে, সেগুলি আর আপনার কোডটিতে হার্ড কোডড হবে না।


7
সুতরাং এর অর্থ এই যে অন্য ব্যক্তিরা আমার ফায়ারবেস ডাটাবেসের সমস্ত ডেটা অ্যাক্সেস করতে সক্ষম হবেন?
ইমানুয়েল ক্যাম্পোস

31
@ ইমানুয়েলক্যাম্পোস উত্তর হ্যাঁ এবং হ্যাঁ, হ্যাঁ, আপনি যদি অন্য ব্যক্তিকে ডেটাবেসের সমস্ত ডেটা অ্যাক্সেস করার অনুমতি দেন বা চান তবে। এবং না, আপনি যদি তাদের না চান। ফায়ারবেস ডাটাবেসের আপনার নিয়ন্ত্রিত নিয়ম, বিধি রয়েছে
খোপি

5
আমার শেষ প্রশ্নটির জন্য আমার উত্তর এখানে খুঁজে পেয়েছেন support.google.com/firebase/answer/6400741 সহায়তার জন্য ধন্যবাদ। এই লিঙ্কটি ভবিষ্যতে কাউকে সহায়তা করতে পারে।
ইমানুয়েল ক্যাম্পোস

7
@ m.rufca, আপনার ডেটা প্রমাণীকরণকারী ব্যবহারকারীদের জন্য উপলব্ধ হওয়া উচিত। এবং এখানে কৌশল। ডিফল্টরূপে, আপনার ফায়ারবেস সেটিংসে কেবল লোকালহোস্ট এবং আপনার প্রকল্প ডোমেনগুলি এগুলি থেকে প্রমাণীকরণ সম্পাদনের জন্য অনুমোদিত। সুতরাং অন্য কেউ অ্যাপ তৈরি করতে পারবেন না যা আপনার ফায়ারবেস নিয়ে সাধারণত কাজ করবে।
আর্টেম আরকিপাভ

15
বটটি যদি আমার অ্যাপ্লিকেশনটিতে সীমাহীন ব্যবহারকারী তৈরি করে। আমি কীভাবে ক্যাপচা প্রয়োজন?
মুহাম্মদ উমার

79

এখানে প্রুফ্রোফ্রো এবং ফ্র্যাঙ্ক ভ্যান পাফেলেনের উত্তরের ভিত্তিতে আমি এই সেটআপটি একসাথে রেখেছি যা স্ক্র্যাপিং রোধ করে না, তবে আপনার এপিআই কীটি ব্যবহার করা কিছুটা শক্ত করে তুলতে পারে।

সতর্কতা: আপনার ডেটা পেতে, এমনকি এই পদ্ধতির সাহায্যে, কেউ উদাহরণস্বরূপ ক্রোমে জেএস কনসোলটি খুলতে পারেন এবং টাইপ করতে পারেন:

firebase.database().ref("/get/all/the/data").once("value", function (data) {
    console.log(data.val());
});

কেবল ডাটাবেস সুরক্ষা বিধিগুলিই আপনার ডেটা সুরক্ষিত করতে পারে।

তবুও, আমি আমার প্রোডাকশন এপিআই কী ব্যবহারটি আমার ডোমেন নামের মতো এইভাবে সীমাবদ্ধ করেছি:

  1. https://console.developers.google.com/apis
  2. আপনার ফায়ারবেস প্রকল্পটি নির্বাচন করুন
  3. পরিচয়পত্র
  4. এপিআই কীগুলির অধীনে আপনার ব্রাউজার কীটি চয়ন করুন। এটির মতো দেখতে হবে: " ব্রাউজার কী (গুগল পরিষেবা দ্বারা নির্মিত অটো) "
  5. " এই এইচটিটিপি রেফারারদের (ওয়েব সাইটগুলি) থেকে অনুরোধ গ্রহণ করুন " এ, আপনার অ্যাপ্লিকেশনটির ইউআরএল যুক্ত করুন (উদাহরণ projectname.firebaseapp.com/*:)

এখন অ্যাপ্লিকেশনটি কেবলমাত্র এই নির্দিষ্ট ডোমেন নামেই কাজ করবে। সুতরাং আমি অন্য একটি এপিআই কী তৈরি করেছি যা লোকালহোস্ট বিকাশের জন্য ব্যক্তিগত হবে।

  1. শংসাপত্রগুলি তৈরি করুন> এপিআই কীতে ক্লিক করুন

ডিফল্টরূপে, ইমানুয়েল ক্যাম্পোস দ্বারা উল্লিখিত হিসাবে, ফায়ারবেস কেবল শ্বেত তালিকা localhostএবং আপনার ফায়ারবেস হোস্টিং ডোমেন


আমি ভুল করে ভুল এপিআই কীটি প্রকাশ করব না তা নিশ্চিত করার জন্য, উত্পাদনে আরও সীমাবদ্ধ একটি স্বয়ংক্রিয়ভাবে ব্যবহার করতে আমি নীচের একটি পদ্ধতি ব্যবহার করি।

তৈরি-প্রতিক্রিয়া-অ্যাপের জন্য সেটআপ

ইন /env.development:

REACT_APP_API_KEY=###dev-key###

ইন /env.production:

REACT_APP_API_KEY=###public-key###

ভিতরে /src/index.js

const firebaseConfig = {
  apiKey: process.env.REACT_APP_API_KEY,
  // ... 
};

ওয়েবপ্যাকের জন্য আমার পূর্ববর্তী সেটআপ:

আমি আমার প্রোডাকশন অ্যাপটি তৈরি করতে ওয়েবপ্যাক ব্যবহার করি এবং index.htmlআপনি যেমন করেন ঠিক তেমনই আমি আমার ডিভ এপিআই কীটি আমার ভিতরে রাখি । তারপরে, আমার webpack.production.config.jsফাইলের ভিতরে , আমি প্রতিবার index.htmlপ্রযোজনা তৈরিতে অনুলিপিটিটি প্রতিস্থাপন করেছি :

plugins: [
    new CopyWebpackPlugin([
      {
        transform: function(content, path) {
          return content.toString().replace("###dev-key###", "###public-key###");
        },
        from: './index.html'
      }
    ])
  ]

1
এটা কি আপনার পক্ষে ঠিক কাজ করছে? একটি অ্যান্ড্রয়েড অ্যাপ্লিকেশনটির জন্য একই জিনিস করার কথা ভাবছিল। আমি ভাবছি কেন ফায়ারবেস সুরক্ষা বিভাগে এটি আবরণ করে না।
স্টিলিওসফ

2
আমার এখন পর্যন্ত কোনও সমস্যা হয়নি, তবে সম্ভবত কোনও আক্রমণ নেই
এখন

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

আপনি ঠিক বলেছেন, আপনাকে ধন্যবাদ আমি উত্তরটি সম্পাদনা করেছি, তবে এটি এখনও কার্যকর হতে পারে বলে পদ্ধতিটি রেখে দিয়েছি।
এখন

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

22

আমি ক্লায়েন্টের কাছে সুরক্ষা / কনফিগার কীগুলি প্রকাশের বিষয়ে নিশ্চিত নই। আমি এটিকে সুরক্ষিত বলব না, কারণ কেউ প্রথম দিন থেকেই সমস্ত ব্যক্তিগত তথ্য চুরি করতে পারে, কারণ কেউ অতিরিক্ত অনুরোধ করতে পারে এবং আপনার কোটা নিকাশ করতে পারে এবং আপনাকে গুগলের কাছে প্রচুর owণী করতে পারে।

লোকেরা যেখানে তাদের ধারণা করা হয় না সেখানে প্রবেশ করতে না সীমাবদ্ধ করা, ডস আক্রমণ ইত্যাদি ইত্যাদি সম্পর্কে আপনাকে অনেকগুলি ধারণা সম্পর্কে ভাবতে হবে think

আমি আরও পছন্দ করবো ক্লায়েন্টটি প্রথমে আপনার ওয়েব সার্ভারে আঘাত করবে, সেখানে আপনি ক্লায়েন্ট এবং সার্ভারের মধ্যে বা সার্ভার এবং ফায়ারবেসের মধ্যে যা প্রথম হ্যান্ড ফায়ারওয়াল, ক্যাপচা, ক্লাউডফ্লেয়ার, কাস্টম সুরক্ষা রেখেছিলেন এবং আপনি যেতে ভাল। কমপক্ষে আপনি সন্দেহজনক ক্রিয়াকলাপটি ফায়ারবেসে পৌঁছানোর আগে প্রথমে থামাতে পারেন। আপনার আরও অনেক নমনীয়তা থাকবে।

অভ্যন্তরীণ ব্যবহারের জন্য ক্লায়েন্ট ভিত্তিক কনফিগারেশন ব্যবহারের জন্য আমি কেবলমাত্র একটি ভাল ব্যবহারের দৃশ্য দেখতে পাচ্ছি। উদাহরণস্বরূপ, আপনার অভ্যন্তরীণ ডোমেন রয়েছে এবং আপনি অবশ্যই নিশ্চিত যে বহিরাগতরা সেখানে অ্যাক্সেস করতে পারে না, তাই আপনি ব্রাউজার -> ফায়ারবেস টাইপের মতো পরিবেশ নির্ধারণ করতে পারেন।


10
তবে এটি অন্য কোনও REST এপিআই "এক্সপোজার" করার মতো নয়? আমি বলতে চাইছি REST এপিআইএল ইউআরএল ব্যবহারকারীর জন্য উপলব্ধ। তারা চাইলে যে কোনও অনুরোধ করতে এবং আপনার কোটা নিষ্কাশন করতে URL টি ব্যবহার করতে পারে use ফায়ারবেস কী করে তা এপিআই কী দিয়ে কনফিগারেশন ব্যবহার করে আপনার ব্যাকএন্ডের অংশটি সনাক্ত করতে পারে এবং এটি ব্যবহারকারীর জন্য অনুরোধ করার জন্য উপলব্ধ থাকতে হবে।
mbochynski

3
@mbochynski কিন্তু আপনি কিছুটা এমন সংস্থানগুলিতে সরাসরি অনুরোধ করতে পারেন যার কারণে আপনার বিল পরিশোধ হয়। ফায়ারবেস পাশে ডিডোএস আক্রমণগুলি রোধ করার জন্য এতগুলি নিয়ন্ত্রণ ব্যবস্থা নেই। আমার পরামর্শটি হ'ল আপনার ক্লায়েন্টটি আপনার আরএসটি এপিআই কল করতে দেয় তবে আরআরইএসপি এপিআই কীগুলি ব্যক্তিগতভাবে রাখা উচিত, এবং আপনি ফায়ারবেস রিসোর্সে আঘাত দেওয়ার আগেও তাদের বৈধতা দিন যদি তারা আইনী অনুরোধ হয়। (ক্লাউডফ্লেয়ার ইত্যাদির মাধ্যমে)। বা ক্যাশে থেকে ফলাফল পুনরুদ্ধার করুন। তারপরে আপনি কেবল তখনই আপনার ফায়ারবেস সংস্থানগুলিকে আঘাত করতে পারবেন যদি আপনার প্রয়োজন হয়। এই আমি কি বাস্তবায়ন হবে firebase.google.com/docs/admin/setup
Teoman shipahi

3
ব্রাউজারে কীগুলি প্রকাশ করা গুরুতরভাবে খারাপ ধারণা। এই সমস্ত গাইড / নিবন্ধ লিখতে যারা, তারা কি চিন্তা ছিল? সুরক্ষার জন্য কি এইচপি এইচএস রেফার? এটি সহজেই স্পোফড হয়
নিক চ্যান আবদুল্লাহ

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

@forresthopkinsa আমার কাছে উপরের লিঙ্কটি কী গ্রহণ করবেন তা মন্তব্য করুন। এখানের একটিও গোপন কী হিসাবে পরামর্শ দেওয়ার মতো এখানের কেউ এতো দক্ষ নয়।
তেওমন শিপাহি

4

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

  "rules": {
    "users": {
      "$uid": {
        ".read": "auth != null && auth.uid == $uid",
        ".write": "auth != null && auth.uid == $uid"
      }
    }
  }
}

অন্য কোনও ব্যবহারকারী অন্য ব্যবহারকারীর ডেটা পড়তে সক্ষম হবেনা, তদুপরি, ডোমেন নীতি অন্যান্য ডোমেন থেকে আসা অনুরোধগুলিকে সীমাবদ্ধ করবে। ফায়ারবেস সুরক্ষা বিধি সম্পর্কে যে কেউ এটি সম্পর্কে আরও পড়তে পারেন


3

ব্যবহারকারী / পাসওয়ার্ড সাইন আপ সক্ষম করা থাকলে API কী এক্সপোজারটি একটি দুর্বলতা তৈরি করে। এখানে একটি ওপেন এপিআই এন্ডপয়েন্ট রয়েছে যা এপিআই কী নেয় এবং যে কাউকে নতুন ব্যবহারকারী অ্যাকাউন্ট তৈরি করতে দেয়। তারপরে তারা আপনার ফায়ারবেস অথ সুরক্ষিত অ্যাপ্লিকেশনটিতে লগ ইন করতে বা ব্যবহারকারী / পাস এবং রান কোয়েরিগুলির সাথে লেখার জন্য এসডিকে ব্যবহার করতে পারেন।

আমি গুগল এ বিষয়টি জানিয়েছি কিন্তু তারা বলে যে এটি উদ্দেশ্য হিসাবে কাজ করছে।

আপনি যদি ব্যবহারকারীর / পাসওয়ার্ড অ্যাকাউন্টগুলি অক্ষম করতে না পারেন তবে আপনার নিম্নলিখিতটি করা উচিত: অনক্রিটে নতুন ব্যবহারকারীদের স্বয়ংক্রিয়ভাবে অক্ষম করতে একটি ক্লাউড ফাংশন তৈরি করুন এবং তাদের অ্যাক্সেস পরিচালনা করতে একটি নতুন ডিবি এন্ট্রি তৈরি করুন।

উদাঃ মাই ইউজার / {ইউজারআইডি} / অ্যাক্সেস: 0

exports.addUser = functions.auth.user().onCreate(onAddUser);
exports.deleteUser = functions.auth.user().onDelete(onDeleteUser);

অ্যাক্সেস> 1 এর সাথে কেবল পাঠকদের মঞ্জুরি দেওয়ার জন্য আপনার বিধিগুলি আপডেট করুন।

অফ সুযোগে শ্রোতার ফাংশনটি অ্যাকাউন্টটি পর্যাপ্ত পরিমাণে অক্ষম করে না তবে পঠিত নিয়মগুলি তাদের কোনও ডেটা পড়তে বাধা দেবে।


3

এটি পড়ার পরে এবং সম্ভাব্যতা সম্পর্কে কিছু গবেষণা করার পরে, আমি অননুমোদিত ব্যবহারকারীদের দ্বারা ডেটা ব্যবহার সীমাবদ্ধ করার জন্য কিছুটা ভিন্ন পদ্ধতির সাথে হাজির হয়েছি:

আমি আমার ডিবিতেও আমার ব্যবহারকারীদের সংরক্ষণ করি (এবং সেখানে প্রোফাইল ডেটা সংরক্ষণ করি)। সুতরাং আমি ঠিক এইভাবে ডিবি নিয়ম সেট করেছি:

".read": "auth != null && root.child('/userdata/'+auth.uid+'/userRole').exists()",
".write": "auth != null && root.child('/userdata/'+auth.uid+'/userRole').exists()"

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

"userdata": {
  "$userId": {
    ".write": "$userId === auth.uid || root.child('/userdata/'+auth.uid+'/userRole').val() === 'superadmin'",
   ...

-2

আপনার এই তথ্যটি প্রকাশ করা উচিত নয়। সর্বজনীনভাবে, বিশেষভাবে এপিআই কীগুলি। এটি কোনও গোপনীয়তা ফাঁস হতে পারে।

ওয়েবসাইটটি সর্বজনীন করার আগে আপনার এটি লুকানো উচিত। আপনি এটি 2 বা আরও বেশি উপায়ে করতে পারেন

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

আমি ফায়ারবেস থেকে উদ্ধৃতি দিয়েছিলাম, "এই লিপিগুলি অনুলিপি করে আপনার <body> ট্যাগের নীচে আটকান, তবে আপনি কোনও ফায়ারবেস পরিষেবা ব্যবহার করার আগে," এআইপি কীটি অন্তর্ভুক্ত রয়েছে
লূক-জাং-04
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.