ጥቃቱ የሚቻለው በ nginx ውቅሮች ውስጥ በPHP-FPM ማስተላለፍ የሚካሄደው የዩአርኤል ክፍሎችን "fastcgi_split_path_info" በመጠቀም በመከፋፈል እና የPATH_INFO አካባቢን ተለዋዋጭ በመወሰን ሲሆን ነገር ግን በመጀመሪያ የፋይሉን መኖር በ"try_files $ fastcgi_script_name" ሳናረጋግጥ መመሪያው ወይም "ከሆነ (!-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 አካባቢ ተለዋዋጭ በመፃፍ ማሳካት ይችላል። በዚህ ሁኔታ, በአፈፃፀም ላይ ተጨማሪ
አንድ አጥቂ በተወሰነ መንገድ የተቀረፀውን ዩአርኤል በመጠየቅ የPat_info ጠቋሚውን ወደ "_fcgi_data_seg" መዋቅር የመጀመሪያ ባይት ሊያንቀሳቅስ ይችላል እና ዜሮን ወደዚህ ባይት መፃፍ የ"ቻር * ፖስ" ጠቋሚውን ወደ ቀድሞው ማህደረ ትውስታ ቦታ ያንቀሳቅሰዋል። ቀጥሎ የተጠራው FCGI_PUTENV አጥቂው ሊቆጣጠረው በሚችለው እሴት በዚህ ማህደረ ትውስታ ውስጥ ያለውን መረጃ ይተካዋል። የተገለጸው ማህደረ ትውስታ የሌሎች የ FastCGI ተለዋዋጮች እሴቶችን ያከማቻል እና ውሂባቸውን በመፃፍ አጥቂው የ PHP_VALUE ተለዋዋጭ መፍጠር እና የኮዱን አፈፃፀም ማሳካት ይችላል።
ምንጭ: opennet.ru