"fastcgi_split_path_info" ஐப் பயன்படுத்தி URL இன் பகுதிகளைப் பிரித்து PATH_INFO சூழல் மாறியை வரையறுப்பதன் மூலம் PHP-FPM க்கு முன்னனுப்புதல் மேற்கொள்ளப்படும் nginx உள்ளமைவுகளில் தாக்குதல் சாத்தியமாகும், ஆனால் முதலில் "try_files $fastcgi_script" ஐப் பயன்படுத்தி கோப்பின் இருப்பை சரிபார்க்காமல். உத்தரவு அல்லது "if (!-f $) document_root$fastcgi_script_name)". பிரச்சனையும் கூட
இடம் ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^ (. +? \. php) (/.*) $;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php:9000;
}
இந்தப் பக்கங்களில் விநியோகக் கருவிகளில் உள்ள சிக்கலின் தீர்வை நீங்கள் கண்காணிக்கலாம்:
try_files $fastcgi_script_name =404;
ஒரு கோப்பில் சுட்டிகளை கையாளும் போது ஏற்பட்ட பிழையால் சிக்கல் ஏற்படுகிறது
fastcgi_split_path_info உத்தரவு புதிய வரி-சென்சிட்டிவ் ரெகுலர் எக்ஸ்ப்ரெஷனைப் பயன்படுத்தி ஸ்கிரிப்ட் பாதையைப் பிரிப்பதைக் குறிப்பிட்டால் (உதாரணமாக, பல எடுத்துக்காட்டுகள் "^(.+?\.php)(/.*)$" ஐப் பயன்படுத்த பரிந்துரைக்கின்றன), பின்னர் தாக்குபவர் ஒரு வெற்று மதிப்பு PATH_INFO சூழல் மாறிக்கு எழுதப்பட்டது. இந்த வழக்கில், மரணதண்டனை மேலும்
ஒரு குறிப்பிட்ட வழியில் வடிவமைக்கப்பட்ட URL ஐக் கோருவதன் மூலம், தாக்குபவர் “_fcgi_data_seg” கட்டமைப்பின் முதல் பைட்டுக்கு path_info சுட்டிக்காட்டியை மாற்ற முடியும், மேலும் இந்த பைட்டில் பூஜ்ஜியத்தை எழுதுவது “char* pos” இன் இயக்கத்திற்கு வழிவகுக்கும். முன்பு அமைந்துள்ள நினைவக பகுதிக்கான சுட்டி. அடுத்ததாக அழைக்கப்படும் FCGI_PUTENV இந்த நினைவகத்தில் உள்ள தரவை தாக்குபவர் கட்டுப்படுத்தக்கூடிய மதிப்புடன் மேலெழுதும். குறிப்பிடப்பட்ட நினைவகம் மற்ற FastCGI மாறிகளின் மதிப்புகளையும் சேமிக்கிறது, மேலும் அவற்றின் தரவை எழுதுவதன் மூலம், தாக்குபவர் கற்பனையான PHP_VALUE மாறியை உருவாக்கி அவற்றின் குறியீட்டை செயல்படுத்த முடியும்.
ஆதாரம்: opennet.ru