"নিরাপদ" বা "অনিরাপদ" মানগুলির মতো কোনও জিনিস নেই। সার্ভারটি কেবলমাত্র মানগুলি নিয়ন্ত্রণ করে এবং মানগুলি ব্যবহার করে যা ব্যবহারকারীরা নিয়ন্ত্রণ করে এবং আপনাকে কোনও মানটি কোথা থেকে আসে সে সম্পর্কে সচেতন হওয়া দরকার এবং তাই এটি কোনও নির্দিষ্ট উদ্দেশ্যে বিশ্বস্ত করা যায় কিনা। $_SERVER['HTTP_FOOBAR']
উদাহরণস্বরূপ কোনও ডাটাবেসে সংরক্ষণ করা সম্পূর্ণ নিরাপদ, তবে আমি অবশ্যই এটি করব না eval
।
এর মতো, আসুন এই মানগুলিকে তিনটি বিভাগে ভাগ করা যাক:
সার্ভার নিয়ন্ত্রিত
এই ভেরিয়েবলগুলি সার্ভার পরিবেশ দ্বারা সেট করা হয় এবং সম্পূর্ণরূপে সার্ভার কনফিগারেশনের উপর নির্ভর করে।
'GATEWAY_INTERFACE'
'SERVER_ADDR'
'SERVER_SOFTWARE'
'DOCUMENT_ROOT'
'SERVER_ADMIN'
'SERVER_SIGNATURE'
আংশিক সার্ভার নিয়ন্ত্রিত
এই ভেরিয়েবলগুলি ক্লায়েন্টকে প্রেরিত নির্দিষ্ট অনুরোধের উপর নির্ভর করে, তবে কেবলমাত্র বৈধ মানগুলির একটি সীমিত সংখ্যক গ্রহণ করতে পারে, যেহেতু সমস্ত অবৈধ মান ওয়েব সার্ভারের দ্বারা প্রত্যাখ্যান করা উচিত এবং স্ক্রিপ্টের অনুরোধটি শুরু করার কারণ নয়। সুতরাং এগুলি নির্ভরযোগ্য হিসাবে বিবেচনা করা যেতে পারে ।
'HTTPS'
'REQUEST_TIME'
'REMOTE_ADDR'
*
'REMOTE_HOST'
*
'REMOTE_PORT'
*
'SERVER_PROTOCOL'
'HTTP_HOST'
†
'SERVER_NAME'
†
'SCRIPT_FILENAME'
'SERVER_PORT'
‡
'SCRIPT_NAME'
* REMOTE_
টিসিপি / আইপি হ্যান্ডশেক দ্বারা যাচাই করা হিসাবে মানগুলি ক্লায়েন্টের বৈধ ঠিকানা হতে গ্যারান্টিযুক্ত। এটি সেই ঠিকানা যেখানে কোনও প্রতিক্রিয়া পাঠানো হবে। REMOTE_HOST
যদিও বিপরীত ডিএনএস লুকআপের উপর নির্ভর করে এবং তাই এটি আপনার সার্ভারের বিরুদ্ধে ডিএনএস আক্রমণ দ্বারা ছদ্মবেশী হতে পারে (এক্ষেত্রে আপনার যে কোনও সমস্যা হতে পারে)। এই মানটি একটি প্রক্সি হতে পারে, এটি টিসিপি / আইপি প্রোটোকলের একটি সাধারণ বাস্তবতা এবং আপনি কিছুই করতে পারেন না এমন কিছুই।
Your যদি আপনার ওয়েব সার্ভার শিরোনাম নির্বিশেষে কোনও অনুরোধের প্রতিক্রিয়া জানায় তবে এটিকেও HOST
অনিরাপদ হিসাবে বিবেচনা করা উচিত। দেখুন safe _SERVER ["HTTP_HOST"] কতটা নিরাপদ? ।
এছাড়াও http://shiflett.org/blog/2006/mar/server-name-versus-http-host দেখুন ।
‡ দেখুন https://bugs.php.net/bug.php?id=64457 , http://httpd.apache.org/docs/current/mod/core.html#usecanonicalphysicalport , HTTP: //httpd.apache। org / ডকস / 2.4 / মোড / কোর html # মন্তব্য_999
সম্পূর্ণ নির্বিচারে ব্যবহারকারী নিয়ন্ত্রিত মান
এই মানগুলি একেবারেই চেক করা হয় না এবং কোনও সার্ভার কনফিগারেশনের উপর নির্ভর করে না, সেগুলি ক্লায়েন্টের দ্বারা প্রেরিত সম্পূর্ণরূপে স্বেচ্ছাচারিত তথ্য।
'argv'
, 'argc'
(কেবলমাত্র সি এল এলির অনুরোধেই প্রযোজ্য, সাধারণত ওয়েব সার্ভারগুলির জন্য উদ্বেগ নয়)
'REQUEST_METHOD'
§
'QUERY_STRING'
'HTTP_ACCEPT'
'HTTP_ACCEPT_CHARSET'
'HTTP_ACCEPT_ENCODING'
'HTTP_ACCEPT_LANGUAGE'
'HTTP_CONNECTION'
'HTTP_REFERER'
'HTTP_USER_AGENT'
'AUTH_TYPE'
‖
'PHP_AUTH_DIGEST'
‖
'PHP_AUTH_USER'
‖
'PHP_AUTH_PW'
‖
'PATH_INFO'
'ORIG_PATH_INFO'
'REQUEST_URI'
(কলঙ্কযুক্ত ডেটা থাকতে পারে)
'PHP_SELF'
(কলঙ্কযুক্ত ডেটা থাকতে পারে)
'PATH_TRANSLATED'
- অন্য কোন
'HTTP_'
মান
Server যতক্ষণ না ওয়েব সার্ভার কেবলমাত্র কিছু নির্দিষ্ট অনুরোধের পদ্ধতির অনুমতি দেয় ততক্ষণ নির্ভরযোগ্য হিসাবে বিবেচিত হতে পারে ।
Authe সত্যতা ওয়েব সার্ভার দ্বারা সম্পূর্ণরূপে পরিচালিত হলে নির্ভরযোগ্য হিসাবে বিবেচিত হতে পারে ।
সুপারগ্লোবলে $_SERVER
বেশ কয়েকটি পরিবেশের ভেরিয়েবলও রয়েছে। এগুলি "নিরাপদ" কিনা এবং কীভাবে (এবং কোথায়) সেগুলি সংজ্ঞায়িত করা হয় তার উপর নির্ভর করে। এগুলি সম্পূর্ণ সার্ভার নিয়ন্ত্রিত থেকে সম্পূর্ণ ব্যবহারকারী নিয়ন্ত্রিত হতে পারে।