Content-Security-Policy
মেটা-ট্যাগ আপনি ঝুঁকি কমাতে পারবেন পদ্ধতি এটা XSS যেখানে সম্পদ থেকে লোড করা যাবে, অন্য কোন অবস্থানে থেকে ডেটা লোড ব্রাউজার প্রতিরোধ আপনি সংজ্ঞায়িত করার অনুমতি দিয়ে আক্রমণ করে। আক্রমণকারীর পক্ষে আপনার সাইটে দূষিত কোড ইনজেকশন করা আরও শক্ত করে তোলে।
আমি কেন একের পর এক সিএসপি ত্রুটি পাচ্ছি তা জানার চেষ্টা করে আমি একটি ইট প্রাচীরের বিপরীতে আমার মাথাটি বেঁধে দিয়েছি এবং এটি কীভাবে কাজ করে তার কোনও সংক্ষিপ্ত, সুস্পষ্ট নির্দেশনা বলে মনে হয় না। সুতরাং এখানে বেশিরভাগ সিএসপি-র কিছু বিষয় সংক্ষেপে ব্যাখ্যা করার জন্য আমার প্রচেষ্টাটি রয়েছে , বেশিরভাগই আমি যে বিষয়গুলি সমাধান করতে কঠিন বলে মনে করি সেগুলিতে মনোনিবেশ করে।
ব্রিভিটির জন্য আমি প্রতিটি নমুনায় পুরো ট্যাগটি লিখব না। পরিবর্তে আমি কেবল content
সম্পত্তিটি দেখাব , সুতরাং একটি নমুনা যার content="default-src 'self'"
অর্থ এটি:
<meta http-equiv="Content-Security-Policy" content="default-src 'self'">
1. একাধিক উত্স কিভাবে অনুমতি দিতে?
একটি স্থান পৃথকীকরণ তালিকা হিসাবে আপনি কেবল নির্দেশের পরে কেবল আপনার উত্সগুলি তালিকাভুক্ত করতে পারেন:
content="default-src 'self' https://example.com/js/"
নোট সেখানে ছাড়া অন্য পরামিতি প্রায় কোন উদ্ধৃতি চিহ্ন আছে যে বিশেষ মতো বেশী 'self'
। এছাড়াও, :
নির্দেশের পরে কোনও কোলন নেই ( )। কেবল নির্দেশিকা, তারপরে পরামিতিগুলির একটি স্থান-বিভাজিত তালিকা।
নির্দিষ্ট প্যারামিটারের নীচে সমস্ত কিছুই স্পষ্টভাবে অনুমোদিত। এর অর্থ এই যে উপরের উদাহরণটিতে বৈধ উত্স হবে:
https://example.com/js/file.js
https://example.com/js/subdir/anotherfile.js
এগুলি অবশ্য বৈধ হবে না:
http://example.com/js/file.js
^^^^ wrong protocol
https://example.com/file.js
^^ above the specified path
২. বিভিন্ন নির্দেশিকা কীভাবে ব্যবহার করবেন, তারা প্রত্যেকে কী করে?
সর্বাধিক সাধারণ নির্দেশাবলী হ'ল:
default-src
জাভাস্ক্রিপ্ট, চিত্র, সিএসএস, ফন্ট, এজেএক্স অনুরোধ ইত্যাদি লোড করার জন্য ডিফল্ট নীতি
script-src
জাভাস্ক্রিপ্ট ফাইলের জন্য বৈধ উত্স সংজ্ঞা দেয়
style-src
সিএসএস ফাইলের জন্য বৈধ উত্স সংজ্ঞা দেয়
img-src
চিত্রগুলির জন্য বৈধ উত্সগুলি সংজ্ঞায়িত করে
connect-src
এক্সএমএলএইচটিপিআরকুয়েস্ট (এজেএক্স), ওয়েবসকেটস বা ইভেন্টসোর্সকে বৈধ লক্ষ্যগুলি নির্ধারণ করে। যদি কোনও হোস্টের সাথে সংযোগের চেষ্টা করা হয় যা এখানে অনুমোদিত নয় তবে ব্রাউজারটি একটি 400
ত্রুটি অনুকরণ করবে
অন্যদের মধ্যে রয়েছে, তবে এগুলি হ'ল আপনার সবচেয়ে বেশি প্রয়োজন।
৩. একাধিক নির্দেশিকা কীভাবে ব্যবহার করবেন?
আপনি আপনার সমস্ত নির্দেশকে একটি মেটা-ট্যাগের ভিতরে একটি সেমিকোলন ( ;
) দিয়ে সমাপ্ত করে সংজ্ঞায়িত করেন :
content="default-src 'self' https://example.com/js/; style-src 'self'"
৪. বন্দরগুলি কীভাবে পরিচালনা করবেন?
ডিফল্ট বন্দরগুলি ছাড়াও সমস্ত কিছুই অনুমোদিত ডোমেনের পরে পোর্ট নম্বর বা একটি নক্ষত্র যুক্ত করে স্পষ্টভাবে অনুমতি দেওয়া দরকার:
content="default-src 'self' https://ajax.googleapis.com http://example.com:123/free/stuff/"
উপরের ফলাফল হতে পারে:
https://ajax.googleapis.com:123
^^^^ Not ok, wrong port
https://ajax.googleapis.com - OK
http://example.com/free/stuff/file.js
^^ Not ok, only the port 123 is allowed
http://example.com:123/free/stuff/file.js - OK
আমি যেমনটি উল্লেখ করেছি, আপনি সমস্ত বন্দরকে স্পষ্টভাবে মঞ্জুরি দেওয়ার জন্য একটি নক্ষত্র ব্যবহার করতে পারেন:
content="default-src example.com:*"
৫. বিভিন্ন প্রোটোকল কীভাবে পরিচালনা করবেন?
ডিফল্টরূপে, শুধুমাত্র মানক প্রোটোকল অনুমোদিত। উদাহরণস্বরূপ ওয়েবসকেটগুলিকে অনুমতি দেওয়ার জন্য ws://
আপনাকে এটিকে স্পষ্টভাবে অনুমতি দিতে হবে:
content="default-src 'self'; connect-src ws:; style-src 'self'"
^^^ web sockets are now allowed on all domains and ports
The. ফাইল প্রোটোকলকে কীভাবে অনুমতি দেওয়া যায় file://
?
আপনি যদি এটির সংজ্ঞা দেওয়ার চেষ্টা করেন তবে এটি কাজ করবে না। পরিবর্তে, আপনি এটি filesystem
প্যারামিটার দিয়ে অনুমতি দেবেন :
content="default-src filesystem"
In. ইনলাইন স্ক্রিপ্ট এবং শৈলীর সংজ্ঞা কীভাবে ব্যবহার করবেন?
সুস্পষ্টভাবে অনুমোদিত না হলে আপনি ইনলাইন স্টাইল সংজ্ঞা, <script>
ট্যাগের ভিতরে কোড বা ট্যাগ বৈশিষ্ট্যগুলিতে ব্যবহার করতে পারবেন না onclick
। আপনি তাদের মত অনুমতি দিন:
content="script-src 'unsafe-inline'; style-src 'unsafe-inline'"
আপনাকে স্পষ্টভাবে ইনলাইন, বেস 64 এনকোডযুক্ত চিত্রগুলিও অনুমতি দিতে হবে:
content="img-src data:"
৮. কীভাবে অনুমতি দেবেন eval()
?
আমি নিশ্চিত যে অনেক লোক বলে যে আপনি তা করবেন না, যেহেতু 'alভালটি মন্দ' 'এবং পৃথিবীর আসন্ন শেষের সর্বাধিক কারণ cause এই লোকেরা ভুল হবে। অবশ্যই, আপনি অবশ্যই স্পষ্টভাবে আপনার সাইটের সুরক্ষার মধ্যে প্রধান গর্তগুলি ঘুষি মারতে পারেন, তবে এটির ক্ষেত্রে পুরোপুরি বৈধ ব্যবহারের ঘটনা রয়েছে। আপনি এটি ব্যবহার সম্পর্কে স্মার্ট হতে হবে। আপনি এটি এর মত অনুমতি দিন:
content="script-src 'unsafe-eval'"
9. হুবহু মানে 'self'
কি?
আপনি 'self'
স্থানীয় হোস্ট, স্থানীয় ফাইল সিস্টেম বা একই হোস্টের কিছু বোঝাতে পারেন । এর অর্থ এইগুলির কোনও নয়। এর অর্থ সূত্রগুলি যা একই স্কিম (প্রোটোকল), একই হোস্ট এবং একই পোর্ট বিষয়বস্তু নীতি হিসাবে সংজ্ঞায়িত ফাইল হিসাবে আছে HT HTTP- র মাধ্যমে আপনার সাইট পরিবেশন করছে? আপনার জন্য কোনও https নেই, যদি না আপনি এটিকে স্পষ্টভাবে সংজ্ঞায়িত করেন।
আমি 'self'
বেশিরভাগ উদাহরণগুলিতে ব্যবহার করেছি কারণ এটি এটিকে অন্তর্ভুক্ত করা সাধারণত বোধগম্য হয় তবে এটি কোনওভাবেই বাধ্যতামূলক নয়। আপনার প্রয়োজন না হলে এটি ছেড়ে দিন।
তবে এক মিনিটে ঝুলো! আমি কি কেবল এটি ব্যবহার content="default-src *"
এবং এটি দিয়ে সম্পন্ন করতে পারি না ?
না the সুস্পষ্ট সুরক্ষিত দুর্বলতাগুলির পাশাপাশি, এটি আপনার প্রত্যাশার মতো কাজ করবে না। যদিও কিছু ডক্স দাবি করে যে এটি কোনও কিছুর অনুমতি দেয়, এটি সত্য নয়। এটি ইনলাইনিং বা বিস্ফোরনের অনুমতি দেয় না, সুতরাং সত্যই সত্যই আপনার সাইটটিকে অতিরিক্ত দুর্বল করে তুলবে, আপনি এটি ব্যবহার করবেন:
content="default-src * 'unsafe-inline' 'unsafe-eval'"
... তবে আমি বিশ্বাস করি আপনি তা করবেন না।
আরও পড়া:
http://content-security-policy.com
http://en.wikipedia.org/wiki/Content_Security_Policy