Sitwazzjoni attwali: PHP2Shell. Żewġ vulnerabbiltajiet kritiċi ta' PHP (CVSS 9,2) jippermettu kodiċi malizzjuż mingħajr login. Patches mill-21/10/2026.X'għandu jsir issa →

Illimita post_max_size u upload_max_filesize b'mod sensibbli

Il-limiti tal-upload jaħdmu fi tliet postijiet: fis-server tal-web, f'PHP u fl-applikazzjoni. Hekk tissettja l-valuri b'mod konsistenti, anke bil-valuri tranżitorji ta' php.net għal PHP2Shell.

Stat 5 min. qariTisħiħ u konfigurazzjoni

Fil-qosor: post_max_size jillimita d-daqs totali ta' talba POST, upload_max_filesize il-fajl individwali; l-istandard skont il-manwal ta' PHP huwa 8M u 2M. Il-valuri jridu jaqblu mal-limiti fis-server tal-web u fl-applikazzjoni, inkella l-uploads jonqsu mingħajr messaġġ ċar. Sal-aġġornament ta' PHP2Shell, php.net jirrakkomanda post_max_size = 8M mingħajr uploads jew 32M b'uploads, upload_max_filesize taħtu, issettjat b'mod li l-applikazzjonijiet ma jegħlbuhx.

Meta l-formola tal-applikazzjonijiet fl-għarrieda tisskot

Wara l-miżuri tranżitorji għal PHP2Shell ħafna amministraturi naqqsu post_max_size. Ftit jiem wara d-dipartiment tal-persunal jirrapporta li l-applikazzjonijiet mhumiex jaslu. Il-formola sempliċement terġa' tgħabbi, l-ebda messaġġ ta' żball. Ir-raġuni: it-talba bi tliet attachments PDF kienet akbar mil-limitu l-ġdid, u PHP warrab id-data tal-formola.

L-eżempju juri l-problema bażika. Il-limiti tal-upload jaħdmu f'diversi postijiet fl-istess ħin, u kull post jirreaġixxi b'mod differenti meta jinqabeż. Min jaf il-katina jista' jissettja l-valuri b'mod li jipproteġu mingħajr ma jfixklu l-operat. Kif PHP jipproċessa l-uploads internament jispjegah Kif PHP jipproċessa uploads ta' fajls; l-implimentazzjoni sigura tal-funzjonijiet tal-upload tiddeskrivih il-gwida Implimenta uploads ta' fajls f'PHP b'mod sigur.

Il-katina tal-limiti tal-upload

Talba tgħaddi minn diversi limiti qabel ma l-applikazzjoni tarahom. L-indikazzjonijiet li ġejjin joriġinaw mid-dokumentazzjonijiet ta' Nginx, Apache u PHP:

Post Issettjar Standard skont id-dokumentazzjoni Meta jinqabeż
Nginx client_max_body_size 1m żball 413 lill-browser
Apache minn 2.4.54 LimitRequestBody 1 GiB (sa 2.4.53: bla limitu) tweġiba ta' żball minflok ipproċessar
PHP post_max_size 8M $_POST u $_FILES vojta
PHP upload_max_filesize 2M il-fajl jiġi rrifjutat b'kodiċi ta' żball
PHP max_file_uploads 20 fajls ulterjuri jiġu injorati
PHP max_input_vars 1000 oqsma ulterjuri tal-formola jonqsu

Minn hawn tinqala' regola sempliċi: upload_max_filesize iżgħar minn post_max_size, post_max_size iżgħar mil-limitu fis-server tal-web. Il-manwal ta' PHP jirrakkomanda wkoll li memory_limit ġeneralment ikun akbar minn post_max_size. Matul il-miżura tranżitorja ta' PHP2Shell b'memory_limit=-1 din ir-rwol jieħdu l-limitu permezz ta' container jew cgroup; aktar dwar dan taħt Issettja memory_limit sew.

post_max_size wara PHP2Shell: x'jirrakkomanda php.net

Fl-avviż tas-sigurtà tal-21/10/2026 php.net isemmi għal servers mingħajr aġġornament limiti baxxi tat-talbiet bħala waħda mill-miżuri tranżitorji. Inaqqsu r-riskju ta' mogħdijiet individwali ta' attakk, imma espliċitament mhumiex protezzjoni sħiħa:

  1. Mingħajr uploads ta' fajls: post_max_size = 8M.
  2. B'uploads ta' fajls: post_max_size = 32M.
  3. Fiż-żewġ każijiet: żomm upload_max_filesize taħt post_max_size.
  4. Ikkunsidra wkoll: limiti fis-server tal-web jew fil-proxy għad-daqs deċifrat tat-talba, l-għadd ta' oqsma tal-input, l-għadd ta' partijiet multipart, l-għadd ta' linji tal-header u l-fond tan-nesting. Skont php.net dawn il-limiti jridu jaqbdu wkoll talbiet mingħajr indikazzjoni utli ta' Content-Length.

Il-valuri jappartjenu fejn l-applikazzjonijiet ma jistgħux jegħlbuhom. Peress li post_max_size u upload_max_filesize skont il-manwal jistgħu jinbidlu fil-livell tad-direttorju, .user.ini jew, ma' mod_php, .htaccess setgħu inkella jerġgħu jgħollu:

; Pool FPM tal-websajt, b'uploads (tranżizzjoni sal-aġġornament)
php_admin_value[post_max_size] = 32M
php_admin_value[upload_max_filesize] = 24M
php_admin_value[max_file_uploads] = 5

Fis-server tal-web iġbed il-limitu ftit 'il fuq, biex talbiet kbar żżejjed ma jaslux saħansitra sa PHP:

# Nginx, fil-blokk server jew location
client_max_body_size 32m;
# Apache, fil-VirtualHost: 32 MiB f'bytes
LimitRequestBody 33554432

Wara erġa' agħmel reload tal-workers kollha ta' PHP u tas-server tal-web. Il-ħarsa ġenerali tal-miżuri tranżitorji kollha tinsab taħt Miżuri immedjati meta ma tistax tippatchja għadek. Jekk u kif talbiet tal-upload jistgħu jiġu ffiltrati wkoll fil-proxy jiddiskutih Iffiltra talbiet tal-upload fuq il-ġnub.

Importanti

Wara kull bidla ittestja l-formoli bl-akbar talbiet leġittimi: applikazzjonijiet b'diversi attachments, importazzjonijiet ta' prodotti, galleriji ta' immaġini. Valur skars żżejjed iwaqqaf proċessi tan-negozju mingħajr ma xi ħadd jara messaġġ ta' żball.

Iddetermina l-valur t-tajjeb għall-websajt tiegħek

Minflok valuri ġenerali jixraq inventarju qasir. Elenka l-formoli kollha b'uploads u innota l-akbar fajl leġittimu u l-ogħla għadd ta' fajls simultanji. Minn hawn jirriżulta l-bżonn: upload_max_filesize ikopri l-akbar fajl individwali, post_max_size is-somma tal-fajls kollha ta' talba flimkien ma' ftit riżerva għall-oqsma tal-formola.

Jekk il-bżonn jaqbeż 32M, ma jaqbilx mar-rakkomandazzjoni tranżitorja ta' php.net. Allura dan huwa raġuni oħra biex l-aġġornament jitressaq. Uploads kbar jistgħu jiġu pproċessati wkoll permezz ta' subdomain proprju b'pool proprju, biex il-websajt l-oħra żżomm limiti stretti.

Wara l-aġġornament għal 8.5.12, 8.4.27, 8.3.36, 8.2.35 jew backport ikkonfermat tista' terġa' tistabbilixxi l-valuri skont il-bżonn reali. Imma m'għandhomx ikunu aktar ġenerużi milli meħtieġ: kull limitu li jaqbeż il-bżonn jikber is-superfiċje ta' attakk mingħajr benefiċċju. Jekk websajt ma teħtieġ l-ebda upload, file_uploads = Off hija l-aktar soluzzjoni nadifa.

Interpreta sew l-iżbalji

Meta l-uploads jonqsu, l-imġiba tiżvela liema limitu qed jaħdem. Paġna b'żball 413 toriġina mis-server tal-web. Formola li terġa' tgħabbi mingħajr messaġġ jew tirrapporta „talba invalida” tindika data $_POST vojta, jiġifieri post_max_size. Messaġġ tal-applikazzjoni dwar fajl individwali jaqbel ma' upload_max_filesize. U oqsma neqsin f'formoli kbar ħafna, pereżempju b'varjanti ta' prodotti, jindikaw max_input_vars. Il-log tal-iżbalji ta' PHP fih, meta post_max_size jinqabeż, ġeneralment twissija bid-daqs tat-talba.

Biex l-utenti ma jibqgħux imħawdin, l-applikazzjoni għandha tagħraf il-każ. Il-manwal ta' PHP jissuġġerixxi triq sempliċi: il-formola tgħaddi marker fl-indirizz, pereżempju ?processed=1. Jekk dan il-marker jaslu, imma $_POST u $_FILES huma vojta, it-talba kienet kbira żżejjed, u l-applikazzjoni tista' turi messaġġ li jinftiehem bid-daqs permess.

Kif tgħin PHP SOS b'mod konkret?

  • Niġbru t-toroq kollha tal-upload tal-websajts tiegħek u niddeterminaw id-daqsijiet verament meħtieġa.
  • Nissettjaw il-limiti tas-server tal-web, ta' PHP u tal-pools b'mod konsistenti u mblukkati kontra sostituzzjoni, inklużi l-valuri tranżitorji ta' php.net.
  • Nittestjaw formoli, importazzjonijiet u uploads wara l-bidla u nadattaw il-valuri b'mod immirat.
  • Bħala parti mit-Tisħiħ tas-server nirritornaw il-valuri wara l-aġġornament għall-bżonn permanenti.

Mistoqsijiet frekwenti

X'inhi d-differenza bejn post_max_size u upload_max_filesize?

upload_max_filesize jillimita d-daqs ta' fajl wieħed mgħobbi. post_max_size jillimita d-data totali ta' talba POST, jiġifieri l-fajls kollha u l-oqsma tal-formola flimkien. Skont il-manwal ta' PHP, post_max_size għalhekk irid ikun akbar minn upload_max_filesize.

X'jiġri jekk talba tkun akbar minn post_max_size?

Skont il-manwal ta' PHP, allura $_POST u $_FILES ikunu vojta. L-applikazzjoni mhix tirċievi l-ebda data tal-formola u spiss turi biss messaġġ ta' żball mhux ċar jew terġa' tgħabbi l-formola. Dan jagħmel dan l-iżball diffiċli biex jinstab.

Liema valuri jirrakkomanda php.net minħabba PHP2Shell?

Bħala miżura tranżitorja sal-aġġornament: post_max_size = 8M għal applikazzjonijiet mingħajr uploads ta' fajls, 32M għal applikazzjonijiet b'uploads, u upload_max_filesize taħtu. Skont php.net din mhijiex protezzjoni sħiħa; biss l-aġġornament għal verżjoni rranġata ta' PHP jagħlaq il-vulnerabbiltajiet.

Nista' nibdel post_max_size b'ini_set() fil-kodiċi?

Le. Skont il-manwal ta' PHP, post_max_size jista' jinbidel biss fil-livell tad-direttorju, pereżempju fil-php.ini, fil-pool FPM, f'.user.ini jew f'.htaccess ma' mod_php. Min irid jimponi l-valur jissettjah b'php_admin_value, allura anke .user.ini ma tistax tegħlbu.

Sorsi

Kuntatt immedjat

Kull siegħa tgħodd. Iktbu lilna issa.

Iddeskrivu fil-qosor is-sistema, il-verżjoni ta' PHP u dak li osservajtu. Nikkuntattjawkom, niċċaraw is-sitwazzjoni u naħdmu mill-bogħod sakemm l-inċident jingħalaq u jiġi ddokumentat.

Għajnuna immedjata