Шабуыл PHP-FPM-ге бағыттау URL бөліктерін “fastcgi_split_path_info” арқылы бөлу және PATH_INFO ортасының айнымалы мәнін анықтау арқылы жүзеге асырылатын nginx конфигурацияларында мүмкін, бірақ алдымен “try_files $fastcgi_script_name” көмегімен файлдың бар-жоғын тексерусіз. директивасы немесе “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 мекенжайын сұрау арқылы шабуылдаушы path_info көрсеткішін «_fcgi_data_seg» құрылымының бірінші байтына жылжытуға қол жеткізе алады және бұл байтқа нөл жазу «char* pos» қозғалысына әкеледі. меңзер бұрын орналасқан жад аймағына. Келесі FCGI_PUTENV деп аталатын бұл жадтағы деректерді шабуылдаушы басқара алатын мәнмен қайта жазады. Көрсетілген жад басқа FastCGI айнымалыларының мәндерін сақтайды және олардың деректерін жазу арқылы шабуылдаушы жалған PHP_VALUE айнымалысын жасап, олардың кодының орындалуына қол жеткізе алады.
Ақпарат көзі: opennet.ru