কম্পিউটার, সফ্টওয়্যার
ফাংশনে পিএইচপি বিশ্বব্যাপী পরিবর্তনশীল। পিএইচপি একটি বিশ্বব্যাপী পরিবর্তনশীল করুন
একটি পূর্ণ সাইট, যা বিস্তৃত কার্যকারিতা থাকে আপনি অনেক জানতে হবে তৈরি করতে। কিন্তু কি তাকে সত্যিই অনন্য করতে পারি - এটা পিএইচপি হয়। প্রোগ্রামিং ভাষা বৈশ্বিক পরিবর্তনশীল খুব প্রায়ই ব্যবহার করা হয় না, কিন্তু কখনও কখনও জানতে কিভাবে এটি কাজ করে, কখনও কখনও তা প্রয়োজনীয় হয়। এটা কি এবং কিভাবে এটি কাজ করে, আমরা এই প্রবন্ধে কি করতে যাচ্ছি গবেষণা।
সুযোগ
ডিফল্টরূপে, স্থানীয় ফাংশন সুযোগ সীমাবদ্ধ। এবং কিভাবে তার গণ্ডি মধ্যে পরিবর্তনশীল দেখা ফাইল করা, যা আরো এবং ব্যবহার করতে পারেন? এই শেষ, এবং পিএইচপি গ্লোবাল ভেরিয়েবল সরবরাহ করা হয়।
শব্দ "বিশ্বব্যাপী"
যেমন একটি ইঙ্গিত বাস্তবায়ন করার পর, তথ্য কোন ফাইলের সাথে কাজ করতে সক্ষম হতে হবে। কোথাও এই পরিবর্তনশীল উল্লেখ হন, কোন কর্মসূচি মানেই বিশ্বব্যাপী সংস্করণ মনোযোগ দিতে হবে।
এত অদ্ভুত ভাষা? আসলে একই সময়ে সেখানে স্থানীয় সংস্করণ হতে পারে। কিন্তু তারা ঐ ফাইল যেখানে ঘোষণা জন্য একচেটিয়াভাবে উপলব্ধ করা হবে। সব বাকি জন্য গ্লোবাল ভেরিয়েবল পিএইচপি বর্গ কাজ করবে। অতএব আপনি সতর্ক হতে হবে। বিশ্বব্যাপী A: আর কোন সন্দেহ নেই যে, এখানে কি তারা মত চেহারা একটি উদাহরণ আছে।
কারণ যদি একটি ফাইল ভেরিয়েবল একটি নম্বর অ্যাক্সেস থাকবে, তবে তাদের বিবাদের জন্য হতে হবে। স্থানীয় বা আন্তর্জাতিক পরিবর্তনশীল পড়া হয়েছে বা পুরাপুরি ব্যর্থ - কিন্তু আমরা নিশ্চিত বলতে পারব না। সুতরাং, যদি এটি একটি ফাংশনে রেজিস্টার যদি এটা কোন সমস্যা থাকা উচিত। কিন্তু তার সীমানা জন্য একটি পরিবর্তনশীল ব্যবহার সমস্যাযুক্ত যাবে। অতএব, কোড ঘনিষ্ঠভাবে নিরীক্ষণ ও নিশ্চিত করার জন্য প্রয়োজনীয় খসড়া কাঠামো যে দাঁড়াতেই নেই এমনকি বলেন সংঘাতের একটি পূর্বশর্ত পড়েছিল।
রেকর্ডিং আরেকটি প্রতিমূর্তি
পূর্বনির্ধারিত / superglobals
প্রত্যেক প্রোগ্রামিং ভাষাতে কিছু নাম যে তার ফাংশন কিছু চার্টার্ড হয় আছে। অতএব, একই নামের কাজ করবে না এর পিএইচপি গ্লোবাল ভেরিয়েবল মধ্যে তৈরি করুন।
এই প্রোগ্রামিং ভাষা তার নিজস্ব বৈশিষ্ট্য আছে। সুতরাং, এটা গুরুত্বপূর্ণ যে এখানে পূর্বনির্ধারিত ভেরিয়েবল, "সুপার" ইনস্টল করা হয় না যে, তারা সব স্থানে পাওয়া যায় না। আমি কিভাবে এটা ঠিক করতে পারবো? করার পূর্বনির্ধারিত ভেরিয়েবল কিছু স্থানীয় এলাকার এ উপলব্ধ ছিল, সেটা নিম্নরূপ :. গ্লোবাল «পরিবর্তনশীল ঘোষিত করা আবশ্যক" এটা আগে বলেন হিসাবে একই হতে, ডান মনে হচ্ছে? এটা সত্য, কিন্তু বেশ। আমাদের ইতিমধ্যে একটি উদাহরণ "যুদ্ধ" তাকান:
- বিশ্বব্যাপী $ HTTP_POST_VARS;
- echo $ HTTP_POST_VARS [ 'NAME']।
আপনি তাদের মধ্যে পার্থক্য লাগছে? মনে রাখবেন যে, পিএইচপি গ্লোবাল ভেরিয়েবল মধ্যে অগত্যা ফাংশন মধ্যে ব্যবহার করা নেই। এটি এমনকি এটি অন্তর্ভুক্ত করা হয়েছে একটি ফাইলে স্থাপন করা যেতে পারে।
লিংক ও নিরাপত্তা
যেহেতু আপনি দেখতে পারেন, পিএইচপি সৃষ্টি একটি বিশ্বব্যাপী পরিবর্তনশীল একটা সমস্যা হয় না। কিন্তু কোন বিশেষ আপেক্ষিক লিংক কি? হ্যাঁ, যখন বিশ্বব্যাপী ব্যবহার সেখানে অপ্রত্যাশিত আচরণের হতে পারে। তার আগে, একটু গল্পের।
সংস্করণ 4.2.0 কে ডিফল্ট register_globals দ্বারা নির্দেশ অন রাষ্ট্র থেকে বন্ধ করতে পরিবর্তন করেছেন। অধিকাংশ ব্যবহারকারীদের জন্য এই অত্যন্ত গুরুত্বপূর্ণ, কিন্তু নিরর্থক নয়। সব পরে, এটা সরাসরি উন্নত পণ্যের নিরাপত্তা প্রভাবিত করে। আপনি করতে দরকার হয় তাহলে পরিবর্তনশীল বিশ্বব্যাপী, এই প্যারামিটারটি উপর পিএইচপি-নির্দেশ সরাসরি প্রভাবিত হয় না। যাইহোক, ভুল ব্যবহারের ইতিমধ্যে প্রিসিডেন্ট নিরাপত্তা তৈরি করতে পারেন।
তাই আপনি যদি register_globals, চালু করা হয় আগে লেখা কোড সঞ্চালনের, বিভিন্ন ভেরিয়েবল যে প্রয়োজন হয় সক্রিয়া উদাহরণ এইচটিএমএল-ফর্ম পাঠাতে পারেন। অতএব, এটা এটিকে বন্ধ করতে সিদ্ধান্ত নেওয়া হয়।
কেন পিএইচপি বিশ্বব্যাপী পরিবর্তনশীল মধ্যে এই ডিরেক্টিভের রাজ্যের অনেক ঋণী হয়? সত্য যে ডেভেলপারদের রাষ্ট্র সবসময় না তখন নিশ্চিতভাবে নিজেদের যেখান থেকে এটা এসেছে প্রশ্নের উত্তর পারে। এক দিকে, এটা কোড লিখতে করা সহজ। কিন্তু অন্যান্য অন - এটি একটি নিরাপত্তা ঝুঁকি নেই। অতএব, ত্রুটি, সেইসাথে তথ্য মিশ এড়াতে এবং নির্দেশ অক্ষম করা হয়েছে।
এখন না / সুরক্ষিত কোড, সেইসাথে কিভাবে ক্ষেত্রে যেখানে বিশ্বব্যাপী পিএইচপি ভেরিয়েবল ঘোষণার তথ্য গরমিল এ প্রচেষ্টা দ্বারা সঙ্গে সনাক্ত করতে দেখা যাক। এই আদেশ না শুধুমাত্র সুন্দর তৈরি করার জন্য প্রয়োজনীয়, কিন্তু ক্রমান্বয়ে সাইট যা প্রথম উপলব্ধ ব্যক্তি ফাটল না কাজ।
ক্ষতিকারক কোড
এর সেট পরিবর্তনশীল যারা অনুমোদিত হয়েছে জন্য সত্য যাক:
যদি (authenticate_user ()) {
$ অনুমোদন সত্য =;
}
যদি ($ অনুমোদন) {
"/highly/sensitive/data.php" অন্তর্ভুক্ত;
}
এই অবস্থায়, পরিবর্তনশীল স্বয়ংক্রিয়ভাবে নির্ধারণ করা যাবে। বিবেচনা যে ডেটা কেবল প্রতিস্থাপিত হতে পারে, এবং তাদের মূল উৎস সেট না করা হয়, তাহলে যে কেউ এই ধরনের একটি পরীক্ষা পাস এবং অন্য কেউ হতে মনে করতে পারবেন। যদি ইচ্ছা করেন, আক্রমণকারী (বা শুধু জানতে আগ্রহী কিন্তু অনভিজ্ঞ ব্যক্তি) প্রতিবন্ধীদের করা যেতে পারে, আমাদের যুক্তি।
আমরা নির্দেশ মান পরিবর্তন করলে, এই কোডটি সঠিকভাবে কাজ করবে, যেমন আমরা প্রয়োজন। কিন্তু ভেরিয়েবল আরম্ভের না শুধুমাত্র প্রোগ্রামিং একটি ভাল স্বন, কিন্তু আমাদের স্ক্রিপ্টের স্থায়িত্ব একটি নির্দিষ্ট গ্যারান্টি দেয়।
কোডের নির্ভরযোগ্য সংস্করণ
আপনি বন্ধ করে দিতে পারেন বা নির্দেশনা কাজ, বা এই লক্ষ্য অর্জনে একটি আরো জটিল কোড বিহিত। উদাহরণ হিসেবে বলা যায়, এভাবে:
যদি (isset ($: _, SESSION- [ 'ব্যবহারকারী নাম'])) {
প্রতিধ্বনি "হ্যালো, {$: _, SESSION- [ 'ব্যবহারকারী নাম']} b> এর";
} অন্য {
প্রতিধ্বনি "হ্যালো, অতিথি করুন b>
";
echo "ওয়েলকাম ব্যবহারকারী!";
}
এই ক্ষেত্রে একটি প্রতিকল্পন করুন, সেখানে কঠিন হবে। কিন্তু এখনও - সম্ভব। এই কাজের জন্য, আপনি যত্ন যে দ্রুত প্রতিক্রিয়া সরঞ্জাম দেয়া হয়েছে নিতে হবে। আপনি পিএইচপি গ্লোবাল ভেরিয়েবল অন্তর্ভুক্ত করতে চাইলে, আপনি নিম্নলিখিত সরঞ্জাম ব্যবহার করতে পারেন যদি আমরা জানি কি পরিসর প্রাপ্ত মান, এটি একটি ম্যাচ দিয়ে এই পরীক্ষা একটি স্ক্রিপ্ট রেজিস্টার করা সম্ভব। অবশ্যই, এটি প্রতিস্থাপন মান বিরুদ্ধে পূর্ণ সুরক্ষা নিশ্চয়তা দেয় না। কিন্তু যে অত্যধিক অপশন উল্লেখযোগ্যভাবে জটিলতা দেখা যায়।
ছদ্মবেশ চেষ্টা অনুসন্ধান করে
দেখা যাক কিভাবে আপনি আগে লিখিত বুঝতে। পিএইচপি ফাংশন বৈশ্বিক ভেরিয়েবল যে নীচে দেওয়া হবে, আপনি নিজেকে ঘোষণা করতে হবে। আমরা বলতে পারি এই পাঠে বিষয়ের আত্তীকরণ উপর হোমওয়ার্ক এক ধরনের। এখানে কোড হল:
পিএইচপি
যদি (isset ($: _ কুকি [ 'C_COOKIE'])) {
} Elseif (isset ($: _ পান [ 'C_COOKIE']) || isset ($: _ পোস্ট [ 'C_COOKIE'])) {
মেইল ( "administrarot@example.com", "দৃষ্টি আকর্ষণ করছি, স্ক্রিপ্ট ডাকাতির এ প্রয়াস এবং ডেটার সঙ্গে গরমিল রেকর্ড করা হয়েছিল",, $ _SERVER [ 'REMOTE_ADDR']);
echo "একটি ভাঙা নিরাপত্তা ছিল বা তা করার প্রশাসক বিজ্ঞাপিত প্রচেষ্টা।";
প্রস্থান;
} অন্য {
}
?>
এখন ব্যাখ্যা তত্প্রতি। আংশিক C_COOKIE একটি নির্ভরযোগ্য উৎস থেকে আসে। সম্পূর্ণরূপে প্রত্যাশিত ফলাফলের অনুযায়ী সন্তুষ্ট করার জন্য, আমরা এর মান পরীক্ষা করুন এবং সমস্যার ক্ষেত্রে প্রশাসক অবহিত করুন। যদি আসে না, তারপর কোনো পদক্ষেপ এবং করতে হবে নি। আপনি বোঝেন শুধু register_globals নির্দেশ আপনার কোড নিরাপদ না অক্ষম যে আছে। অতএব, কোন পরিবর্তনশীল যে ব্যবহারকারী থেকে একটি স্ক্রিপ্ট পায় প্রত্যাশিত মান জন্য চেক করা উচিত।
উপসংহার
এখানে, সাধারণভাবে, এবং সবকিছু আপনি গ্লোবাল ভেরিয়েবল সফলভাবে এবং নিরাপদে তাদের কাজে ব্যবহার সম্বন্ধে জানা প্রয়োজন। অবশ্যই, বলতে একটি পূর্ণ নিশ্চয়তা কেউ তাদের পারবনা ব্যবহার করবে নেই - আক্রমণকারীদের ক্রমাগত তাদের পদ্ধতি এবং দক্ষতা বাড়ানোর করছে। এটা তোলে কোডে গ্লোবাল ভেরিয়েবল সর্বোচ্চ ব্যবহার সীমিত করতে তাই বাঞ্ছনীয়। সৌভাগ্যবসত, এই প্রোগ্রামিং ল্যাঙ্গুয়েজ এর গঠন এবং নকশা বৈশিষ্ট্য এই লক্ষ্য অর্জন করতে পারেন। সৌভাগ্য কামনা করছি!
Similar articles
Trending Now