ব্লক, নোড, ভিউ-আরগস ইত্যাদিতে পিএইচপি ফিল্টার কোড ব্যবহারের ডাউনসাইডগুলি কী কী?


96

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

আমি বুঝতে পেরেছি এটি বিশেষত শেষ ব্যবহারকারী বা দ্রুপাল বা পিএইচপি-র নতুন লোকের হাতে একটি সম্ভাব্য সুরক্ষা ঝুঁকি রয়েছে, তবে একটি বিকাশকারী / সাইট নির্মাতা হিসাবে ড্রুপাল ইউআই থেকে কাস্টম পিএইচপি ব্যবহার না করার আসল কারণগুলি কী?


1
যথারীতি পরিস্থিতি নির্ভর করে! আপনার যদি কেবলমাত্র 'ভিউজ পাদলেখ' এর মধ্যে আপনার ভিউ পৃষ্ঠার নীচে একটি প্রাথমিক মুদ্রণ $ ব্লকের প্রয়োজন হয় তবে কেবলমাত্র সেই উদ্দেশ্যে একটি সম্পূর্ণ পুরো টিপিএল ফাইল লেখার তুলনায় এটি কেবল গুইয়ের মাধ্যমে করা আদর্শ হতে পারে। এটি অবশ্যই সাইটের ভূমিকা এবং অন্যান্য কারণগুলির উপরও নির্ভর করে: আঁটসাঁট সময়সীমা? ব্যবহারকারী সম্প্রদায় সাইট? নাকি শুধু তথ্যমূলক সাইট? এটি কি ব্যবসায়িক ক্রিয়াকলাপের পক্ষে গুরুত্বপূর্ণ? ইত্যাদি ... নির্ভর করে।
পটোশি パ ト 23

উত্তর:


129

কিছু কারণ:

  • আপনার ডাটাবেসে কোড সংস্করণে নিয়ন্ত্রিত হতে পারে না এবং পরে সাধারণভাবে খুঁজে পাওয়া আরও শক্ত।
  • ইভাল () এর ডি কোড কোনও ফাইলে হার্ডকড করা কিছু থেকে অনেক ধীর।
  • যদি সেই কোডটিতে কোথাও কোনও ত্রুটি থাকে তবে আপনি একটি খুব অহেতুক ত্রুটি বার্তা পাবেন (line লাইনে ইওল () এর ডি কোডে ত্রুটি) এবং ত্রুটিটি সন্ধান করতে এবং ঠিক করতে আপনি নিজেই নিজের ডাটাবেসটিতে গিয়ে থাকতে পারেন। যদি এটি কোনও ব্লকের ভিতরে থাকে যা সমস্ত পৃষ্ঠায় প্রদর্শিত হয় এবং উদাহরণস্বরূপ সর্বদা মারাত্মক ত্রুটির ফলস্বরূপ।
  • উপরোক্তগুলি ড্রুপাল 6 থেকে 7 থেকে আপগ্রেড করার সময়ও সত্য এবং আপনি যে কোনও এপিআই ব্যবহার করেছেন তা পরিবর্তন করা হয়েছিল। সুতরাং স্থানান্তরের সময় আপনাকে আপনার কোডটি পোর্ট করতে হবে। কোডটি যদি কোনও মডিউলে থাকে তবে আপনি এটিকে আগে থেকে পোর্ট করতে পারেন, এটি পরীক্ষা করতে পারেন এবং কেবল নতুন সাইটে এটি স্থাপন করতে পারেন। কোনও নোড বা ব্লকের অভ্যন্তরে, এটি কেবল দ্রুপাল 6 বা 7 এর সাথে কাজ করবে।
  • সেই কোডটি লেখা এবং রক্ষণাবেক্ষণ করা আরও শক্ত, কারণ আপনি নিজের ব্রাউজারের ভিতরে একটি পাঠ্যক্ষেত্রের কাজ করছেন। এটি একটি মডিউলে থাকা আপনাকে সিন্ট্যাক্স হাইলাইটিং, স্বতঃসিদ্ধ এবং আরও কিছু দিয়ে একটি সম্পাদক / আইডিই ব্যবহার করতে দেয়।
  • এখানে সর্বদা একটি ভুল কনফিগারেশনের সম্ভাবনা থাকে যা লোকেরা কোনও পাঠ্য বিন্যাস / ব্লক / পিএইচপি এক্সিকিউশন সক্ষম হওয়া যা কিছুতেই সক্ষম করে। যদি পিএইচপি.মডিউল (ডি 7-তে, ডি 6 এত কঠোর নয়, উদাহরণস্বরূপ ব্লক অ্যাক্সেস বিধিগুলির জন্য) এমনকি সক্ষম না করা হয়, তবে এই ঝুঁকিটি ইতিমধ্যে অনেক কম।
  • যদি আপনার সিএমএস পিএইচপি কার্যকর করার অনুমতি দেয় তবে কোনও আক্রমণকারী যিনি এক্সএসএস বা সুবিধাসমূহের সুরক্ষার ঝুঁকির সন্ধান করে এখন আপনার সার্ভারটি অত্যন্ত দূষিত জিনিসের জন্য ব্যবহার করতে পারে (একটি ডিডিওএসের অংশ হিসাবে, স্প্যাম প্রেরণ, ম্যালওয়্যার হোস্টিং, অন্যান্য সাইট / ডাটাবেসে হ্যাকিং সার্ভার, ফায়ারওয়ালের পিছনে থাকতে পারে এমন নেটওয়ার্কের অন্যান্য সার্ভারগুলিতে হ্যাকিং। ছোট দুর্বলতাগুলিকে আরও বেদনাদায়ক করে তোলার পাশাপাশি, এটি পিএইচপিপি কার্যকর করতে ব্যবহার করা যেতে পারে যদি এটি পরিচিত হয় তবে এটি আক্রমণটিকে আরও সম্ভাব্য টার্গেট করে তোলে।

আরও কারণ থাকতে পারে, তবে এটি যথেষ্ট হওয়া উচিত :)


3
চমৎকার তালিকা :) আশা করি অন্যের জন্য একটি সংস্থান হবে
লক্ষ্মণ 13

3
@ লক্ষ্মণ ১৩: "অন্যের কাছে" ... এবং আপনার জন্যও! : ডি @ বার্ডির: +1, খুব ভাল দিক। যাইহোক, আপনাকে কোনও পাঠ্য ক্ষেত্রে পুরো কোডটি লিখতে হবে না, কারণ আপনি সেখানে কোনও ফাইলও অন্তর্ভুক্ত করতে পারেন। যেমন আপনি পাঠ্য ক্ষেত্রে কেবল একটি লাইন রাখতে পারেন: require_once $_SERVER['DOCUMENT_ROOT'].'/sites/all/themes/myTheme/php/stuff.php';এবং বাকী কোডটি আপনার আইডিই / পাঠ্য সম্পাদককে লিখুন। কখনও কখনও এটি একটি সহজ কাজ নয় বা একটি ভাল পিএইচপি-বিকাশকারী হিসাবে এমনকি একটি নিজস্ব মডিউল তৈরি করতে খুব দীর্ঘ সময় লাগবে। একটি সংক্ষিপ্ত উদাহরণ: উবারকার্ট শর্তসাপূর্ণ ক্রিয়া। তবে এটি সত্য যে আমাদের কোডটি ডিবিতে রাখা ভাল জিনিস নয়।
Sk8erPeter

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

1
+1000 - আমি তাই দেখেছি, এতগুলি প্রকল্প এই তালিকার প্রতিটি বুলেট পয়েন্টে প্রায় অনেকটাই পুড়ে গেছে। আমার সমগ্র জীবনে একটাই সময় ছিল যে পিএইচপি মডিউল ব্যবহার করা বুদ্ধিমান উপায়ে কোনও কাজ করার একমাত্র উপায় ছিল এবং এটি কেবলমাত্র D6 এর সাথে কোনও সমস্যা ছিল যা ডি 7-এ স্থির হয়েছিল।
geerlingguy

এই প্রশ্নের উত্তর দেওয়ার জন্য আপনাকে ধন্যবাদ। দ্রুপালে কাজ করার সময় আমি একটি পরিস্থিতি পেয়েছি, যখন আমাদের যখন 'টেক্সট এডিটর'-এ লিঙ্ক যুক্ত করতে হবে, তখন আমাদের' টেক্সট ফিল্টার'-এ পিএইচপি কোড ব্যবহার করা উচিত অন্যথায় এটি প্রত্যাশার মতো কাজ করবে না।
জয়েন্দ্র ক্যানথোলা

17

এই কোডটি ডিবাগ করা এবং বজায় রাখা কঠিন। এই জাতীয় পিএইচপি কোডের জন্য সংস্করণ নিয়ন্ত্রণ ব্যবহার করার কোনও উপায় আমি জানি না।

এবং এটি সত্যই দ্রুপাল বা পিএইচপি-র নতুন লোকের জন্য একটি সম্ভাব্য সুরক্ষা ঝুঁকি,


1
ঠিক আছে, যদি ব্লক কনফিগারেশনটি বৈশিষ্ট্যগুলির মডিউলগুলির সাথে কোডে রফতানি করে তবে পিএইচপি স্নিপেটগুলি সংস্করণ নিয়ন্ত্রণে রাখার সমস্যা নেই not
ya.teck

14

নোডে ব্যবহৃত পিএইচপি ফিল্টারটির ক্ষেত্রে বিবেচনা করে, এটি ব্যবহার না করার কারণ হ'ল আপনি যদি সেই ব্যবহারকারীদের এই নোডটি সম্পাদনা করতে পারেন তবে আপনি যদি সমস্ত ব্যবহারকারীকে পিএইচপি ফিল্টার ব্যবহারের অনুমতি না দিতে চান তবে সীমাবদ্ধ করুন।
পিএইচপি ফিল্টার ব্যবহার করার পরিবর্তে, একটি কাস্টম মডিউল ব্যবহার করা ভাল যা নোড সামগ্রীতে নির্দিষ্ট পাঠ্যটিকে কোড প্রয়োগ করে (ব্যবহার না করে eval()) এর ফলাফলের সাথে প্রতিস্থাপন করে , বা নোডের বডি কনটেন্টের সাথে নিজস্ব পাঠ্য যুক্ত করে। এই ক্ষেত্রে, কোনও ব্যবহারকারী নোড সম্পাদনা করতে পারে, পিএইচপি ফিল্টার দ্বারা চালিত যথেচ্ছ পিএইচপি কোড যুক্ত করার অনুমতি ছাড়াই।

সাধারণত, এড়ানো ভাল better eval()কারণ এটি কোডের পঠনযোগ্যতা হ্রাস করে, রানটাইমের আগে কোড পাথ (এবং এর সম্ভাব্য সুরক্ষা সম্পর্কিত প্রভাবগুলি) আপনার পূর্বাভাস দেওয়ার ক্ষমতা এবং তাই কোডটি ডিবাগ করার ক্ষমতা।

বিকাশ বা পরীক্ষার সাইট ছাড়াও আমি পিএইচপি ফিল্টার সক্ষম করব না, বা পাস হওয়া পিএইচপি কোডটি ব্যবহার করব না eval()

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


11

উপরে উল্লিখিত বিভিন্ন সমস্যার জন্য কাজ হিসাবে - কোড রক্ষণাবেক্ষণ, সংস্করণ নিয়ন্ত্রণ, ত্রুটি সন্ধানের অসুবিধা, আপনার এই সামান্য "ক্লুজি" সম্ভাবনা রয়েছে:

সর্বদা অন্তর্ভুক্ত এমন কোনও ফাইলে ফাংশন তৈরি করুন (তাদের নাম অনুসারে নাম দিন) যা সর্বদা অন্তর্ভুক্ত থাকে - আপনার যদি সাইটের জন্য কাস্টম মডিউল লিখতে থাকে তবে এই ফাংশনগুলি রাখার দুর্দান্ত জায়গা। তারপরে আপনি যে পিএইচপি প্রবেশ করবেন তা কেবলমাত্র: return my_specialfunc($somevar);- $somevarএখানে নোড অবজেক্টটি সম্ভবত কাজ করা হচ্ছে বা অন্যান্য ভেরিয়েবলগুলি এখানে প্রাসঙ্গিক।

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

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


11

আপনার প্রশাসনিক ব্যবহারকারীরা যদি সরাসরি ডিবি পরিবর্তন করতে না চান তবে আপনার ব্যবহারকারীদের এই অনুমতিটি দেওয়া এড়াতে এই সুরক্ষা দুর্বলতার কারণ।

<?php
echo file_get_contents(dirname(__FILE__)."/../sites/default/settings.php");
?>

ড্রুপাল ডিবি শংসাপত্র হ্যাক করা


7

এর মতো কিছু করার পরিবর্তে return functionname($object), টোকেন / ফিল্টার সিস্টেম ইনসফার যতটা সম্ভব ব্যবহার করা ভাল। সন্নিবেশ ভিউ এবং এম্বেড নোডের মতো মডিউল রয়েছে যা সাধারণ পরিস্থিতিতে সাহায্য করতে পারে যেখানে লোকেরা নোড বা ব্লক বডিগুলিতে পিএইচপি এম্বেড করতে চায়।


0

আপনার আপনার ডেটার বহনযোগ্যতা সম্পর্কে যত্ন নেওয়া উচিত। আপনি যদি নিজের নোডগুলি ড্রুপাল 7 থেকে ড্রুপাল 8 তে স্থানান্তর করেন এবং কিছু নোডের বডি টেক্সট <?php whatever_function_that_does_not_exist_anymore(); ?>এতে থাকে?

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

যথাসম্ভব কম অবদানযুক্ত মডিউল ব্যবহার করাও এর একটি দিক।

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