প্রতিযোগীদের কাছে গোপনীয়তা প্রকাশ না করে কীভাবে একজন পিএইচপি ওয়েব অ্যাপ্লিকেশনটি সুরক্ষিতভাবে ডিবাগ করা উচিত?


11

সম্প্রতি আমি একটি প্রোগ্রাম করেছি। আমি 2 লাইন কোড মুছে ফেলতে ভুলে গেছি এই ভুলটির জন্য প্রতিদিন আমার জন্য $ 800 খরচ হয়।

আমি পিএইচপি নিয়ে প্রোগ্রামিং করছিলাম। কোনও ভিজিটর যদি প্রক্সি ব্যবহার করে তবে তা অন্য কোথাও পুনঃনির্দেশ করুন। ডিবাগার ব্যবহার করা অসম্ভব কারণ কিছু কোডে আয়নক्यूब রয়েছে। কারণ প্রোগ্রামটি কেবল অন্য কোথাও পুনর্নির্দেশ করুক না কেন, কোডটির কোন অংশটি কার্যকর হয়েছে তা দেখা মুশকিল।

তাই আমি গুচ্ছ ডিবাগিংয়ের তথ্য সর্বত্র রেখেছি। আমি ভেবেছিলাম এগুলি যেভাবেই মুছে ফেলব।

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

আমি ডিবাগিং মোড থাকার কথা বিবেচনা করেছি। তবে আমি আশঙ্কা করছি যে আমি ডিবাগিং তথ্য মুছে ফেলতে ভুলে যাব।

উদাহরণস্বরূপ, ব্যবহারকারী যদি ডিবাগিংমোড = 1 করেন তবে আমি ডিবাগিং মোড থাকার কথা বিবেচনা করেছি। তবে, আমি ভৌতিক ছিলাম যে আমার প্রতিযোগী কোনওভাবে গোপন কীওয়ার্ডটি অনুমান করতে পারে।

আমি সর্বাধিক ডিবাগিং তথ্য মুছে ফেলেছি। আমি একটি মুছতে ভুলে গিয়েছি এবং যদি ব্যবহারকারীরা সঠিক দেশ থেকে প্রক্সি ব্যবহার করে তবে এটি কেবলমাত্র প্রদর্শিত হবে। দেখা যাচ্ছে আমার কাছে সঠিক দেশ থেকে প্রক্সি নেই এবং তা বুঝতে পারি নি। প্রোগ্রামটি 24 ঘন্টা কাজ করার পরে, আমি এটি আমার প্রধান ডোমেনে আপলোড করেছি।

আমার প্রতিযোগী, প্রক্সি ব্যবহার করে, ডিবাগিং কোডটি দেখুন। তিনি এই ধারণাটি অনুলিপি করেছেন এবং এভাবেই আমি প্রতিদিন $ 800 ডলার হারিয়েছি।

পূর্ববর্তী ক্ষেত্রে, আমি কোথায় ভুল হয়ে গিয়েছিলাম তা দেখতে সত্যিই আমার খুব কষ্ট হয়েছে। আমি খুব যত্নশীল হয়েছে। তবুও তা ঘটেছে।

প্রতিযোগীদের কাছে গোপনীয়তা প্রকাশ না করে কীভাবে একজন পিএইচপি ওয়েব অ্যাপ্লিকেশনটি সুরক্ষিতভাবে ডিবাগ করা উচিত?


5
কোনও কিছুর বিষয়ে একেবারে নিশ্চিত হওয়ার মতো কোনও বিষয় নেই, বাগফ্রি সফ্টওয়্যারটি ছেড়ে দিন।
টার

1
প্রোগ্রাম / অ্যাপ্লিকেশনটিতে প্রতিটি পরিবর্তন করার পরেও এটি খুব সামান্য পরিবর্তন হলেও পুরোপুরি বার বার পরীক্ষা করা হচ্ছে।
রোলেন কোহ

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

8
আমি ভাবছি যে ডিবাগিং কোডের দুটি লাইন সম্পর্কে এতটাই সমালোচনা কী হতে পারে যে এটির মূল্য প্রতিদিন $ 800। এটি আপনার ব্যক্তিগত ক্রাইপোটোগ্রাফিক কীটি ফেলে দেয়?
ফিলিপ

2
আপনি যদি এর আগে কিছুক্ষণের জন্য একদিনে $ 800 ডলার উপার্জন করতেন ... তবে কি তা বিবেচ্য নয়? তবে হ্যাঁ লাইভে ডিবাগ কোডটি রাখবেন না! আপনার কোনও ফাইলের মধ্যে একটি কনফিগার ডিবাগ মোড বুলিয়ান থাকতে পারে। ডিবাগ কোড কেবল মুদ্রণ করুন যদি ডিবাগ == সত্য হয়। এটি অন্তত একটি দ্রুত এবং নোংরা উপায়, উত্তর হওয়ার যোগ্য নয়!
আনোন 343224 ব্যবহারকারীর

উত্তর:


37

আমি কোথায় ভুল হয়েছি তা দেখতে সত্যিই আমার খুব কষ্ট হচ্ছে

সবচেয়ে বড় ভুলটি হ'ল আপনি চাকাটি পুনরায় সজ্জিত করেছিলেন। লগিংয়ের জন্য ডিফল্ট মেকানিজম ব্যবহার না করে আপনি নিজের আবিষ্কার করেছেন , যা পৃষ্ঠার মধ্যে তথ্য প্রদর্শন করে। লগিং ফ্রেমওয়ার্কটি বরং লগ ফাইলগুলিতে লগগুলি সঞ্চয় করে, আপনাকে সার্ভারে এসএসএইচিংয়ের পরে সেই লগগুলির পরামর্শ দিতে দেয় let

বাগগুলি হিসাবে, বাগ-মুক্ত কোড তৈরির অর্থ আনুষ্ঠানিক প্রমাণের মতো নির্দিষ্ট কৌশলগুলি ব্যবহার করে । তাদের ব্যয়বহুলতার দিক থেকে, সেই কৌশলগুলি জীবন-সমালোচনামূলক অ্যাপ্লিকেশনগুলির জন্য উপযুক্ত যেমন অ্যাপ্লিকেশন যা বিমানের ট্র্যাফিক বা স্পেস শাটলগুলি নিয়ন্ত্রণ করে তবে প্রায় প্রতিটি ব্যবসায়িক অ্যাপ্লিকেশনের জন্য ওভারকিল ।

■ দেখুন তারা ফাস্ট কোম্পানির ম্যাগাজিনে সঠিক জিনিস লিখছে।
নিবন্ধটি নাসায় ব্যবহৃত পদ্ধতিটির পাশাপাশি এইভাবে সফ্টওয়্যার তৈরির ব্যয় বর্ণনা করে describes

Mechan যান্ত্রিকীকরণ প্রুফ দেখুন (ম্যাকেনজি 2004)।
বইটিতে সফ্টওয়্যারটির স্বয়ংক্রিয় প্রমাণের ইতিহাসের সংক্ষিপ্তসার রয়েছে, যেমন প্রমাণের কার্যকারিতা এবং বিধিগুলি ব্যাখ্যা করে, পাশাপাশি এটি নির্ভরযোগ্য সফ্টওয়্যার লেখার জন্য ব্যবসায়ীরা সাধারণত ব্যবহৃত হয় না এমন কারণগুলি।

এটি বলা হচ্ছে, সফ্টওয়্যারটির মান নিশ্চিত করতে ব্যবসায়িক অ্যাপ্লিকেশনগুলির জন্য প্রচুর কৌশল ব্যবহার করা হয়েছে। এর মধ্যে রয়েছে তবে সীমাবদ্ধ নয়:

  • অনানুষ্ঠানিক কোড পর্যালোচনা,
  • সাধারণ কোড পরিদর্শন,
  • পরীক্ষামূলক,
  • কোডের ব্যক্তিগত ডেস্ক-চেকিং,
  • প্রভৃতি

Code কোড সম্পূর্ণ দেখুন (ম্যাককনেল 2004), প্রোগ্রামিং উত্পাদনশীলতা (জোনস 1986a), সফ্টওয়্যার ত্রুটি-অপসারণ দক্ষতা (জোন্স 1996), এবং আমরা ত্রুটির বিরুদ্ধে লড়াইয়ের বিষয়ে কী শিখলাম (শুল এট আল। 2002)।

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

■ দেখুন সেফ ক্রমাগত ডিপ্লোয়মেন্ট করার দ্য সিক্রেট (ভিডিও)
এটা ব্যাখ্যা করেন কি কৌশল অত্যন্ত দীর্ঘ উৎপাদনে জন্য স্থিত থেকে স্থাপনার সামনে খুঁজে পাওয়া যাবে না যা বাগ প্রতিরোধ Google- এ স্থাপন করা হয়েছে। এটি বর্ণনা করে pdiffএবং কীভাবে এটি ব্যাগগুলি ধরতে ব্যবহৃত হয়েছিল, সেগুলি সহ উপস্থাপনা স্তরের সাথে সম্পর্কিত ছিল না।


13

আপনি উত্পাদন কখনও ডিবাগ করা উচিত নয়।

আপনার সর্বদা একটি পরীক্ষার পরিবেশ থাকা উচিত যা উত্পাদন পরিবেশের অনুরূপ এবং সেখানে ডিবাগ করা উচিত।

যখন আপনাকে পরীক্ষার পরিবেশে কোড পরিবর্তন করতে হবে (ডিবাগিং স্টেটমেন্ট যুক্ত করার মতো), আপনার অবশ্যই নিশ্চিত হওয়া উচিত যে তারা উত্পাদনে না যায়।

একটি পেশাদার সেটআপ সাধারণত দেখতে লাগে:

Production
   ^
Staging
   ^
Development

আপনার অ্যাপ্লিকেশনটির "উত্পাদন", "মঞ্চায়ন" এবং "বিকাশ" উদাহরণগুলি যথাসম্ভব সমান হওয়া উচিত যাতে "উত্পাদনে" যে বাগটি ঘটে সেটিকে "মঞ্চায়ন" এবং "বিকাশ" এ পুনরুত্পাদন করা যায়, তবে এখনও সম্পূর্ণরূপে পৃথক করা যায় একে অপরকে যাতে এক উদাহরণে যা ঘটে তা অন্যকে প্রভাবিত করে না।

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

একটি সঠিক সংস্করণ নিয়ন্ত্রণ এবং বিল্ড ম্যানেজমেন্ট সিস্টেম আপনাকে এটিতে সহায়তা করতে পারে।


1
এটাই আমি করেছি। আমি প্রথমে অন্যান্য ডোমেনগুলিতে ডিবাগ করি। এর পরে, আমি নতুনগুলিতে চলে যাই। তবে, অন্যান্য ডোমেনে বাগটি এখনও সেখানে ছিল।
ব্যবহারকারী 114310

1
@ ব্যবহারকারী ১১৩৩০১০, আপনার বিকাশ / পরীক্ষার পরিবেশটি কেবল বাইরের বিশ্বের দ্বারা অ্যাক্সেসযোগ্য নয় (হয় লোকালহোস্টে থাকা বা ভিপিএন প্রয়োজন হয়, বা অনুরূপ)। যদি আপনি কিছু ডিবাগ কোড সন্নিবেশ করান এবং উত্পাদনের দিকে ধাক্কা দেওয়ার আগে এটি অপসারণ না করেন তবে এটি মানবিক ত্রুটি এবং এর বিরুদ্ধে সুরক্ষা দিতে পারে এমন কোনও প্রযুক্তিগত কিছুই নেই; সহজভাবে আরও যত্নবান হন।
ব্রায়ান এস

3
@ user114310 দুঃখিত, আমি বুঝতে পারি না। আপনি স্টেজে বাগটি ঠিক করেছেন কিন্তু আপনি যখন এই ফিক্সটি প্রযোজনার ক্ষেত্রে প্রয়োগ করেছিলেন তখন বাগটি এখনও ছিল? এর অর্থ হ'ল আপনি বাগটি সঠিকভাবে উত্পাদন করেন নি এবং দুর্ঘটনাক্রমে অন্য কিছু স্থির করেছেন fixed আপনি যখন বিকাশে বাগের পুনরুত্পাদন করতে অক্ষম হন, তার অর্থ আপনার বিকাশের পরিবেশ উত্পাদন পরিবেশের মতো নয়। আপনি যখন আবিষ্কার করেন যে বাগটি সঠিকভাবে গবেষণা করার আগে আপনাকে প্রথমে এটি ঠিক করতে হবে।
ফিলিপ

4

এটি খুব কমই করা হয় কারণ প্রচেষ্টা সার্থক নয়। এমনকি যদি আপনি প্রতিদিন $ 800 ডলার হারান, একটি প্রোগ্রামকে দ্রুত প্রমাণ করার প্রচেষ্টা তার চেয়ে বড় হয়ে যায়, যা বোঝায় যে এটি করার জন্য কোনও ব্যবসায়ের মামলা নেই।

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


1
এমনকি নাসা এটি ভুল করে। আপনি নিজের পছন্দমতো চেষ্টা করতে পারেন তবে কিছু জিনিস কেবল মানুষের বোধগম্যতার বাইরে এবং এইভাবে আশ্বাস দেওয়া খুব কঠিন।
ফোশি

1
+1: আনুষ্ঠানিক যাচাইকরণ একটি জিনিস, আপনি যদি এ সম্পর্কে আরও বিশদে যেতে পারেন তবে ভাল হবে। আমি জানি এটি একটি জিনিস তবে আমার কাছে আরও বিস্তারিত জানার শব্দ নেই। যেমন সমস্ত ইনপুট পরীক্ষা করে যাচাইকরণ, সীমাবদ্ধ স্টেটম্যাচিনে হ্রাস, প্রথম আদেশের যুক্তিতে হ্রাস। এর জন্য শব্দটি কী? প্রমাণ দ্বারা এই যাচাইকরণ? আমি ভাবছি এটাই সেটা.
লিন্ডন হোয়াইট

এখানে আনুষ্ঠানিক যাচাইকরণ রয়েছে তবে তাত্ত্বিক যাচাইকরণও রয়েছে যা নিশ্চিত না হলেও নির্দিষ্ট আত্মবিশ্বাসের স্তরে যাচাইকরণ সরবরাহ করতে পারে। আমি কলেজ থেকে এই বিষয়ের উপর খুব বেশি কিছু মনে করতে পারি না তবে কোর্সে আমরা একটি সরঞ্জাম ব্যবহার করেছি স্পিন যা আমি বিশ্বাস করি যে পুরোপুরি যাচাই করতেও সক্ষম। এটিতে বর্ণিত কিছুগুলির মধ্যে সঠিক শব্দটি কী তা জবাব দিতে পারে।
রিগ

2

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

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

আপনার সাইটে যদি 'ব্যবহারকারী' থাকে তবে আপনি ডিবাগিং কেবলমাত্র নির্দিষ্ট ব্যবহারকারীর মধ্যে সীমাবদ্ধ করতে পারেন। এইভাবে যদি কেউ ডিবাগিং সক্ষম করার চেষ্টা করে তবে এটি ব্যবহারকারী হিসাবে লগ ইন না করা অবধি এটি কাজ করবে না।

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


1

অন্য প্রত্যেকে ইতিমধ্যে সাধারণ কেসটি কভার করেছে:

আনুষ্ঠানিক বৈধকরণ (/ প্রমাণিত কোড): 4000 লাইনের ওএস কার্নাল থাকলেও বাস্তব বিশ্বের প্রোগ্রামগুলির পক্ষে সম্ভব নয়, এটি আনুষ্ঠানিকভাবে প্রমাণিত হয়েছিল, এটি অনেক রাশিয়ান সিএস পিএইচডি শিক্ষার্থীদের অনেক মাস সময় নিয়েছিল (দয়া করে মন্তব্য করুন যদি এই প্রকল্পের নাম মনে হয়)

সিআই টেস্টিং << অটোমেটেড টেস্টিং << টেস্টিং : আপনার পরীক্ষার ক্ষেত্রে 100% কভারেজ রয়েছে কিনা তা পরীক্ষা করতে আপনি কোনও কভারেজ টুলটি ব্যবহার করেছেন তা নিশ্চিত করুন।

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

  1. সংকলনের সময়ে এটি সরান। #ifdef DEBUGবিল্ড লক্ষ্যমাত্রা পরীক্ষা করতে, (নয়তো ডিবাগ বা প্রকাশ করুন) এবং সংকলনের সময় সেগুলি স্বয়ংক্রিয়ভাবে অপসারণ করতে C # এবং C এর মতো কাঠামোগুলিতে ডিবাগ কোড মোড়ানো

  2. এটি মোতায়েনের সময় ফ্ল্যাগ করুন। কোডের নিকটে একটি মন্তব্য দিন যা অবশ্যই প্রকৃত পরিবেশে চালিত হবে না। উদাহরণস্বরূপ //TODO: Remove This Before Deployment, যখন কোডটি সংকলনের আগে এটি স্টেজিং-এ স্থানান্তরিত (মোতায়েন) করা হয়, তখন একটি সাধারণ স্ক্রিপ্টের মাধ্যমে এটি চালান //TODO:যা সোর্স কোডে কোনও ফ্ল্যাগ মন্তব্য নেই (যেমন ) বাকী আছে কিনা তা পরীক্ষা করে দেখুন ।

আমি প্রাক্তনটিকে পরামর্শ দিচ্ছি যদি এটি দীর্ঘতর হয় এবং আপনি এটি আবার চান (উদাহরণস্বরূপ ভার্বোজ লগিং মোড), এবং পরে যদি এটি ডিবাগ করার সময় একটি দ্রুত হ্যাক হয় (উদাহরণস্বরূপ আপনার কোডের মাধ্যমে ছড়িয়ে ছিটিয়ে থাকা বিভিন্ন প্রিন্টফ)


0

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

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


0

উত্পাদনের ডিবাগিং সম্পর্কে অন্যেরা যা বলেন তা সঠিক। তবে আমি কখনও কখনও যাইহোক এটি করেছি। এবং আমি মনে করি এটি করার চেয়ে নিরাপদ উপায় আছে আপনার চেয়ে কিছু, যদিও কিছুই নির্বোধ নয়।

আমার নিজের মতো উচ্চ নিরাপত্তার দরকার নেই, আমি চাই না যে ব্যবহারকারীরা তাদের পর্দায় একগুচ্ছ জিব্বারিশ দেখতে পান।

$debug = true;
$allowed_ips = array('192.168.0.220','173.46.89.255'); // limit to your own ip's. If your competitor knows them, though, he can spoof it! But if your stuff is not top secret, it's ok. 

if(!in_array($_SERVER['REMOTE_ADDR'],$allowed_ips) ) {
  $debug = false;
}

if($debug) {
  echo '<pre>' . print_r($some_variable) . '</pre>';
}

এখন ব্যবহারকারীরা সত্যই না চাইলে আপনার ডিবাগটি দেখতে পাবে না। যদি আপনার $ 800 / দিন এই ডিবাগ তথ্যটি গোপন রাখার উপর নির্ভর করে তবে উপরের কোডটি ব্যবহার করবেন না । তবে তথ্যটি যদি সংবেদনশীল না হয় তবে উপরেরটি জিইটি ভেরিয়েবলের উপর নির্ভর করে বা গোপনীয়তা গোটা দেশে প্রকাশ করার চেয়ে অনেক ভাল।

বিকল্পভাবে, আপনি এমন একটি debugবর্গ বা ফাংশন তৈরি করতে পারেন যা আপনার মানদণ্ডের ভিত্তিতে মুদ্রণ অনুমোদিত কিনা তা পরীক্ষা করতে পারে । এটা যা আমি করি.

এটার মতো কিছু:

class debug {
  public $on = false;
  public static function print($variable) {
    if($on) {
      echo '<pre>' . print_r($some_variable) . '</pre>';
    }
  }
}

debug::print($some_variable); // class checks if printing is allowed. If not, no printing occurs.

আমার প্রোগ্রাম যা আমাকে $ 800 / দিন (বিকাশে) করবে, আমি সাইটের কোনও অংশে অ্যাক্সেস করার জন্য পাসওয়ার্ডের পাশাপাশি নির্দিষ্ট আইপিগুলিতে ডিবাগের তথ্য সীমাবদ্ধ করার জন্য অ্যাপাচি মোড অ্যাথ ব্যবহার করি। আপনার প্রশ্ন আমাকে ভাবায় যে তবে আরও ভাল সুরক্ষার দিকে নজর দেওয়া উচিত।


0

আসলে, আমার এখানে দুটি অতিরিক্ত বৈধতা থাকবে। &debug=1অনুরোধের একটি প্যারামিটার। আপনি কিছু বিশেষ সেশন ভেরিয়েবল বা কুকি সেটআপও ব্যবহার করতে পারেন যা কেবলমাত্র আপনি "গোপন" পৃষ্ঠায় কল করার মাধ্যমে সক্রিয় করতে পারেন (যথাযথ প্রমাণীকরণের সাথে)।

দ্বিতীয় বৈধতা কনফিগারেশন ফাইলের মধ্যে থাকবে, একটি আইপির ব্যাপ্তিযুক্ত একটি অ্যারে এবং সেই অ্যারেতে কেবল একটি আইপি থেকে কলগুলি ডিবাগিং কার্যকারিতাটি ট্রিগার করতে পারে। কিছুটা এইরকম

কনফিগারেশনে:

$debugAllowedIPs = array('127.0.0.1', '192.168.0.1', /* add more IPs here */);

নিম্নলিখিত পদ্ধতিটি কোথাও রয়েছে যেখানে এটি বিশ্বব্যাপী অ্যাক্সেস করা যেতে পারে:

function getClientIp() {
    if (!empty($_SERVER['HTTP_CLIENT_IP']))  return $_SERVER['HTTP_CLIENT_IP'];
    if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) return $_SERVER['HTTP_X_FORWARDED_FOR'];
    return $_SERVER['REMOTE_ADDR'];
}

এবং আপনার কোডে কিছু কল করুন:

if (in_array(getClientIp(), $debugAllowedIPs)) { /* show debug info here */ }

দয়া করে মনে রাখবেন যে getClientIp()পদ্ধতিটির কোডটি নিরাপদ নয় যেহেতু এর মানটি $_SERVER['HTTP_X_FORWARDED_FOR']সহজেই বানোয়াট হয়ে যায়, তবে এটি আপনার প্রশ্নের জন্য পয়েন্টটি অর্জনের উদ্দেশ্যটি পরিচালনা করবে।

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