প্রথমে, ড্রুপাল এপিআই এগুলি সম্পর্কে পড়ুন:
সুতরাং check_plain()
এইচটিএমএল (যেমন <
এবং &
) এর স্পেনাল টেক্সট সত্তাগুলিতে (যেমন <
এবং &
যথাক্রমে) এর বিশেষ অর্থ রয়েছে এমন বিশেষ অক্ষরগুলি এনকোড করে যখন এই স্ট্রিংটি পৃষ্ঠার অংশ হিসাবে প্রদর্শিত হবে তখন সেইগুলি অক্ষরে অক্ষরে ( এইচটিএমএল হিসাবে ব্যাখ্যা করা হবে না) রেন্ডার করা হবে when এইচটিএমএল-মার্কআপ। filter_xss()
ক্রস-সাইট-স্ক্রিপ্টিং (এক্সএসএস) দুর্বলতাগুলি রোধ করতে ফাংশনটি একটি HTML স্ট্রিং ফিল্টার করে। এটি চারটি কাজ করে:
- অক্ষর এবং নির্মাণগুলি মুছে ফেলা যা ব্রাউজারগুলি চালিত করতে পারে
- সমস্ত এইচটিএমএল সত্তা সুসংহত হয়েছে তা নিশ্চিত করে
- সমস্ত এইচটিএমএল ট্যাগ এবং বৈশিষ্ট্যগুলি সুগঠিত রয়েছে তা নিশ্চিত করে
- এইচটিএমএল ট্যাগগুলিতে কোনও অস্বীকৃত প্রোটোকল (যেমন জাভাস্ক্রিপ্ট :) সহ ইউআরএল নেই তা নিশ্চিত করা aking
উভয় ফাংশন ব্যবহারকারীর কাছ থেকে ডেটা স্যানিটাইজ করতে ব্যবহার করা হয় তা নিশ্চিত করার জন্য যে কোনও ব্যবহারকারী ইঞ্জেকশন আপনার সাইটে ডেটা রেন্ডার করার আগে নিরপেক্ষ হয়েছে ।
আপনি উভয়ের মধ্য দিয়ে কখনও একই স্ট্রিংটি পাস করেন না ।
আপনি যদি ব্যবহার করেন check_plain()
তবে ফাংশনে পাস করা স্ট্রিংটি সরল পাঠ্য হিসাবে ব্যবহৃত হবে বলে মনে করা হয় (এইচটিএমএল নয়)। তারপরে filter_xss()
দরকার নেই, যেহেতু check_plain()
সর্বদা স্ট্রিংয়ের সরল পাঠ্য তৈরি করবে।
আপনি যদি ব্যবহার করেন filter_xss()
, তবে ফাংশনটির কাছে দেওয়া স্ট্রিংটি এইচটিএমএল হওয়ার কথা, এবং check_plain()
এটি বিশৃঙ্খলা করবে।
উদাহরণস্বরূপ আপনি যে টেম্পলেটটি ব্যবহার করেন আমি তার দিকে তাকালে আমার কাছে মনে হয় যেন তিনটি ক্ষেত্রই print()
ইতিমধ্যে স্যানিটাইজড সামগ্রী থেকে এসেছে এবং এর জন্য আর স্যানিটেশন দরকার নেই।
তবে, আপনি যদি নিজের নিজস্ব মডিউল তৈরি করেন যা "ফিল্টারযুক্ত এইচটিএমএল" বা "সমতল" এর মতো কোনও "সুরক্ষিত" পাঠ্য ফিল্টারটি ছাড়াই ব্যবহারকারীর ইনপুট সংগ্রহ করে, আপনাকে অবশ্যই স্যানিটেশন উদ্দেশ্যে এই ফাংশনগুলি ব্যবহার করতে হবে।
filter_xss()
আপনি সম্ভাব্য বিপজ্জনক বিষয়বস্তু (কোনো অবিশ্বস্ত ব্যবহারকারী থেকে অর্থাত বিষয়বস্তু) থেকে ফিল্টার পদ্ধতি এটা XSS করতে চান যখন, এবংcheck_plain()
আপনি একটি স্ট্রিং থেকে HTML বিশেষ অক্ষর অব্যাহতি চান