স্ক্রিপ্ট এবং শৈলী উপাদানগুলির জন্য এইচটিএমএল "ননস" বৈশিষ্ট্যের উদ্দেশ্য কী?


140

ডাব্লু 3 সি বলেছেন যে এইচটিএমএল 5.1 তে একটি নতুন বৈশিষ্ট্য আহ্বান করা nonceহয়েছে styleএবং scriptএটি কোনও ওয়েবসাইটের সামগ্রী সুরক্ষা নীতি দ্বারা ব্যবহার করা যেতে পারে।

আমি এটি সম্পর্কে গুগল করেছি কিন্তু অবশেষে এটি পেলাম না আসলে এই বৈশিষ্ট্যটি কী করে এবং এটি ব্যবহারের সময় কী পরিবর্তন হয়?


2
দেখে মনে হচ্ছে এটি আপনার সাইটের সুরক্ষার অতিরিক্ত মাত্রা, আপনি এটি কোনও লিঙ্ক বা কোনও ফর্মের সাথে যুক্ত করেন এবং পৃষ্ঠাটি পরিবেশন করা হয়, যদি ননসটি আপনার সাথে মেলে না, তবে আপনি পৃষ্ঠাটি পরিবেশন করবেন না
পিট

@ পিট আপনার মানে তখন কেউ আপনার scriptএবং লোড করতে পারে না style? হটলিংক নিষিদ্ধের মতো কিছু?
আতা

এটি সাধারণ পৃষ্ঠাগুলির জন্য এবং ফর্ম বৈধতার জন্যও
পিট

উত্তর:


195

nonceঅ্যাট্রিবিউট থেকে "পরিচ্ছন্ন তালিকা" নির্দিষ্ট ইনলাইন করতে সক্ষম scriptএবং styleযখন সিএসপি ব্যবহার এড়ানো উপাদান unsafe-inline(যা সম্ভব হবে ডিরেক্টিভের সব ইনলাইন script/ style,) যাতে আপনি এখনও ইনলাইন নামঞ্জুর করার চাবি সিএসপি বৈশিষ্ট্য বজায় রাখা script/ styleসাধারণভাবে।

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

https://developers.google.com/web/fundamentals/security/csp/#if_you_absolutely_must_use_it বৈশিষ্ট্যটি কীভাবে ব্যবহার করতে হয় তার একটি ভাল উদাহরণ দেয় nonce, যা নিম্নলিখিত পদক্ষেপগুলির সমান:

  1. আপনার ওয়েব সার্ভারটি কোনও নির্দিষ্ট নথির জন্য প্রাপ্ত প্রতিটি অনুরোধের জন্য, আপনার ব্যাকএন্ডে একটি ক্রিপ্টোগ্রাফিক সুরক্ষিত র্যান্ডম নম্বর জেনারেটর থেকে কমপক্ষে 128 বিটের ডেটা একটি এলোমেলো বেস 64-এনকোড স্ট্রিং তৈরি করতে দিন; যেমন EDNnf03nceIOfn39fn3e9h3sdfa,। এটাই তোমার বোকা

  2. পদক্ষেপ 1 এ উত্পন্ন নোকসটি নিন এবং যে কোনও ইনলাইন script/ styleআপনি "শ্বেতলিস্ট" রাখতে চান, আপনার ব্যাকএন্ড কোডটি nonceতারের উপরে প্রেরণের আগে ডকুমেন্টটিতে একটি বৈশিষ্ট্য সন্নিবেশ করান , মান হিসাবে ননসটি সহ:

    <script nonce="EDNnf03nceIOfn39fn3e9h3sdfa"></script>
  3. পদক্ষেপ 1 এ উত্পাদিত ননসটি নিন, nonce-এটিকে প্রিপেন্ড করুন এবং আপনার ব্যাকএন্ডের জন্য উত্স তালিকার মানগুলির সাথে একটি সিএসপি শিরোনাম উত্পন্ন করুন script-srcবা style-src:

    Content-Security-Policy: script-src 'nonce-EDNnf03nceIOfn39fn3e9h3sdfa'

সুতরাং একটি ননস ব্যবহার করার পদ্ধতিটি আপনার ব্যাকএন্ডটি ইনলাইনটির সামগ্রীগুলির একটি হ্যাশ তৈরি করতে scriptবা styleআপনি অনুমতি দিতে চান তার বিকল্প এবং তারপরে আপনার সিএসপি শিরোনামের উপযুক্ত উত্স তালিকায় সেই হ্যাশটি নির্দিষ্ট করে।

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

তবে আপনি যেভাবে কোনও স্থির নন ব্যবহার করতে চান না তা হ'ল, ননস ব্যবহার শুরু করার জন্য একেবারে সম্পূর্ণ উদ্দেশ্যকে পরাস্ত করতে চাই — কারণ, আপনি যদি এইরকম স্ট্যাটিক নন ব্যবহার করেন, এই মুহুর্তে আপনি পাশাপাশি ব্যবহার করতে পারেন unsafe-inline


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

3
ননসগুলি সংরক্ষণ করার দরকার নেই - পরিবর্তে তারা মেমরিতে উত্পন্ন হয় এবং সিএসপি শিরোনাম এবং প্রতিক্রিয়াতে তারের মাধ্যমে প্রেরিত এইচটিএমএল নথিতে sertedোকানো হয় (সার্ভার ফাইল সিস্টেম / ডাটাবেসে সঞ্চিত উত্স নয়)।
sideshowbarker

3
nonceগুণটি ব্যবহার করার ক্ষেত্রে যতটা প্রচেষ্টা করার কোনও কারণ নেই , যদি আপনার একেবারে ব্যবহার করার প্রয়োজন না হয় তবে তা করবেন না। এটি কেবলমাত্র সেই ক্ষেত্রেই বোঝানো হয়েছে যেখানে কোনও কারণে আপনি নির্দিষ্ট দস্তাবেজ থেকে কিছু ইনলাইন স্ক্রিপ্ট বা স্টাইলের বিষয়বস্তুগুলি পরিত্রাণ পেতে পারেন না (তবে এটি পরে মুছে ফেলা উচিত)। সুতরাং যদি কোনও কারণে আপনি ইনলাইন স্ক্রিপ্ট এবং স্টাইলের বিষয়বস্তু রাখার প্রয়োজনে আটকে থাকেন তবে সেই সময়ে আপনি কমপক্ষে ব্রাউজারদের ঠিক আছে কিনা তা যাচাই করতে ননস প্রক্রিয়াটি ব্যবহার করতে পারেন। অন্যথায় আপনার কেবলমাত্র সিএসপিটি সম্পূর্ণরূপে প্রকৃত উদ্দেশ্য হিসাবে ব্যবহার করা উচিত, এবং কোনও ইনলাইন স্ক্রিপ্ট বা শৈলীর উপাদানগুলিকে মঞ্জুরি দেওয়া উচিত নয়
sideeshowbarker

2
@ সিডিশোবার্কার, খালি ননস কী করে? আমি এর সাথে পৃষ্ঠাগুলি দেখছি <script type="text/javascript" nonce>এবং<style type="text/css" nonce>
প্যাসেরিয়র

7
দ্রষ্টব্য: যদি আপনার স্ক্রিপ্ট স্থিতিশীল হয় তবে আমি একটি নাকের পরিবর্তে একটি সিএসপি হ্যাশ প্রস্তাব করি।
ব্রায়ান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.