কীভাবে এবং কখন ফিল্টার_এক্সএস () এবং চেক_প্লেইন () ব্যবহার করবেন?


11

views-view-fields--magazine--magazine.tpl.phpআমার ওয়েবসাইটে প্রচুর টেমপ্লেট ফাইল রয়েছে । কীভাবে এবং কখন আমার সুরক্ষা উন্নত করতে ফিল্টার_এক্সএসএস () এবং চেক_প্লেইন () ব্যবহার করা উচিত? উদাহরণস্বরূপ এটি কোড:

<div>
    <div class="bf-header bf-article-header"><?php print $fields['title']->content; ?></div>
    <div class="bf-article-body"><?php print $fields['field_magazine_body']->content;?></div>
    <div class="bf-article-image"><?php print $fields['field_magazine_image']->content;?></div>
</div>
<div class="separator article-view-separator"></div>

আমি কীভাবে এতে এই ফাংশনগুলি প্রয়োগ করতে পারি?


ব্যবহারের filter_xss()আপনি সম্ভাব্য বিপজ্জনক বিষয়বস্তু (কোনো অবিশ্বস্ত ব্যবহারকারী থেকে অর্থাত বিষয়বস্তু) থেকে ফিল্টার পদ্ধতি এটা XSS করতে চান যখন, এবং check_plain()আপনি একটি স্ট্রিং থেকে HTML বিশেষ অক্ষর অব্যাহতি চান
ক্লাইভ

উত্তর:


13

প্রথমে, ড্রুপাল এপিআই এগুলি সম্পর্কে পড়ুন:

সুতরাং check_plain()এইচটিএমএল (যেমন <এবং &) এর স্পেনাল টেক্সট সত্তাগুলিতে (যেমন &lt;এবং &amp;যথাক্রমে) এর বিশেষ অর্থ রয়েছে এমন বিশেষ অক্ষরগুলি এনকোড করে যখন এই স্ট্রিংটি পৃষ্ঠার অংশ হিসাবে প্রদর্শিত হবে তখন সেইগুলি অক্ষরে অক্ষরে ( এইচটিএমএল হিসাবে ব্যাখ্যা করা হবে না) রেন্ডার করা হবে when এইচটিএমএল-মার্কআপ। filter_xss()ক্রস-সাইট-স্ক্রিপ্টিং (এক্সএসএস) দুর্বলতাগুলি রোধ করতে ফাংশনটি একটি HTML স্ট্রিং ফিল্টার করে। এটি চারটি কাজ করে:

  • অক্ষর এবং নির্মাণগুলি মুছে ফেলা যা ব্রাউজারগুলি চালিত করতে পারে
  • সমস্ত এইচটিএমএল সত্তা সুসংহত হয়েছে তা নিশ্চিত করে
  • সমস্ত এইচটিএমএল ট্যাগ এবং বৈশিষ্ট্যগুলি সুগঠিত রয়েছে তা নিশ্চিত করে
  • এইচটিএমএল ট্যাগগুলিতে কোনও অস্বীকৃত প্রোটোকল (যেমন জাভাস্ক্রিপ্ট :) সহ ইউআরএল নেই তা নিশ্চিত করা aking

উভয় ফাংশন ব্যবহারকারীর কাছ থেকে ডেটা স্যানিটাইজ করতে ব্যবহার করা হয় তা নিশ্চিত করার জন্য যে কোনও ব্যবহারকারী ইঞ্জেকশন আপনার সাইটে ডেটা রেন্ডার করার আগে নিরপেক্ষ হয়েছে

আপনি উভয়ের মধ্য দিয়ে কখনও একই স্ট্রিংটি পাস করেন না ।

আপনি যদি ব্যবহার করেন check_plain()তবে ফাংশনে পাস করা স্ট্রিংটি সরল পাঠ্য হিসাবে ব্যবহৃত হবে বলে মনে করা হয় (এইচটিএমএল নয়)। তারপরে filter_xss()দরকার নেই, যেহেতু check_plain()সর্বদা স্ট্রিংয়ের সরল পাঠ্য তৈরি করবে।

আপনি যদি ব্যবহার করেন filter_xss(), তবে ফাংশনটির কাছে দেওয়া স্ট্রিংটি এইচটিএমএল হওয়ার কথা, এবং check_plain()এটি বিশৃঙ্খলা করবে।

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

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


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

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

বেনামী ব্যবহারকারীদের কেবলমাত্র ব্যবহারের অনুমতি রয়েছেplain text
এম আমা ডি

@ দ্রুপালিস্ট, ঠিক আছে। সরল পাঠ্য স্যানিটাইজ করার জন্য এই ফাংশনগুলি ব্যবহার করার দরকার নেই।
ফ্রি র‌্যাডিকাল

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