Go achomair: Ní cuimhin le HTTP aon rud idir dhá iarratas. Réitíonn seisiún PHP é sin: tugann PHP ID seisiúin randamach, seolann sé chuig an mbrabhsálaí é mar chuach agus stórálann sé na sonraí a bhaineann leis ar an bhfreastalaí, mar chomhad de réir réamhshocraithe. Le gach iarratas eile, léann session_start() na sonraí arís de réir an ID. Baineann an fheidhm session.upload_progress le seisiún PHP freisin, a molann php.net a mhúchadh go sealadach ar thaobh an fhreastalaí mar gheall ar PHP2Shell.
Cén fáth a dteastaíonn seisiúin ó fheidhmchláir ghréasáin
Seasann gach iarratas ar fhreastalaí gréasáin dó féin. Gan mheicníocht bhreise, ní bheadh a fhios ag siopa nuair a chliceáiltear ar “Ciseán” cé a chuir rud éigin isteach ann díreach anois, agus b'éigean do limistéar riaracháin an pasfhocal a iarraidh le gach cliceáil. Nascann seisiúin iarratais aonair le chéile ina seisiún.
Do lucht cinnteoireachta ciallaíonn sé seo: tar éis logáil isteach, tá an ID seisiúin chomh luachmhar le hainm úsáideora agus pasfhocal le chéile. Do riarthóirí ciallaíonn sé: is ceist slándála é cá bhfuil sonraí seisiúin agus conas, go háirithe ar fhreastalaithe le roinnt suíomhanna gréasáin.
Cad a tharlaíonn le session_start()
Tá an sreabhadh mar an gcéanna le gach iarratas agus is féidir cur síos a dhéanamh air i gcúig chéim:
- Seolann an brabhsálaí an chuach leis an ainm seisiúin,
PHPSESSIDde réir réamhshocraithe. - Léann
session_start()an ID agus cuireann sé chuig an láimhseálaí stórála é,filesde réir réamhshocraithe. - Luchtaíonn an láimhseálaí na sonraí stóráilte, aistríonn PHP ar ais iad leis an
serialize_handleragus líonann sé$_SESSION. - Léann an script
$_SESSIONagus athraíonn sé é cosúil le gnáth-eagar. - Ag deireadh an iarratais, scríobhann PHP na sonraí ar ais. Le
session.lazy_write(réamhshocrú: air) ach amháin má tá siad athraithe.
<?php
session_start();
$_SESSION['besuche'] = ($_SESSION['besuche'] ?? 0) + 1;
echo 'Seitenaufrufe in dieser Sitzung: ', (int) $_SESSION['besuche'];
Mura bhfuil seisiún ann fós, cruthaíonn PHP ID nua agus leagann sé an chuach. Má tá session.use_strict_mode gníomhach, diúltaíonn PHP do IDanna anaithnide a sheolann an brabhsálaí agus cruthaíonn sé ceann nua. Measann lámhleabhar PHP go bhfuil an socrú seo éigeantach don bhunslándáil.
Réamhshocruithe ba cheart a bheith ar eolas
Tá na luachanna seo a leanas i bhfeidhm de réir lámhleabhar PHP, mura bhfuil aon rud eile cumraithe. Socraíonn a lán dáiltí agus soláthraithe óstála luachanna dá gcuid féin, dá bhrí sin is tábhachtaí i gcónaí an chumraíocht atá i bhfeidhm i ndáiríre.
| Socrú | Réamhshocrú | Brí |
|---|---|---|
session.save_handler |
files |
áit stórála na sonraí, Redis nó bunachar sonraí indéanta freisin |
session.name |
PHPSESSID |
ainm na cuaiche |
session.serialize_handler |
php |
formáid na sonraí stóráilte |
session.use_strict_mode |
0 |
glactar le IDanna anaithnide |
session.use_only_cookies |
1 |
gan ID seisiúin sa seoladh |
session.cookie_httponly |
0 |
is féidir le JavaScript an chuach a léamh |
session.cookie_secure |
0 |
an chuach fiú thar HTTP gan chriptiú |
session.cookie_samesite |
folamh | gan tréith SameSite |
session.gc_maxlifetime |
1440 |
soicindí go dtí an glanadh indéanta |
session.gc_probability / gc_divisor |
1 / 100 |
glanadh ag thart ar gach céadú tús |
session.upload_progress.enabled |
1 |
scríobhtar dul chun cinn uaslódála isteach sa seisiún |
Dá bhrí sin níl na luachanna do cookie_httponly, cookie_secure agus use_strict_mode deartha don tslándáil as an monarcha. Déanann an treoir Seisiúin i PHP a chosaint cur síos ar an gcaoi leo a shocrú i gceart. Tá na socruithe session.sid_length agus session.sid_bits_per_character marcáilte mar shean ó PHP 8.4.0.
Cuacha a shocrú go díreach
Chomh maith leis an gcuach seisiúin, is féidir le feidhmchlár cuacha dá chuid féin a shocrú. Ó PHP 7.3.0 glacann setcookie() le heagar roghanna chuige sin, samesite san áireamh. Ó PHP 8.5.0 tá an rogha partitioned ann freisin.
<?php
setcookie('sprache', 'de', [
'expires' => time() + 60 * 60 * 24 * 30,
'path' => '/',
'secure' => true,
'httponly' => true,
'samesite' => 'Lax',
]);
De réir an lámhleabhair, nuair a bhíonn samesite ar None, ní mór secure a bheith socraithe freisin, nó cuireann an brabhsálaí bac ar an gcuach. Is sonraí an bhrabhsálaí iad cuacha: tagann a n-ábhar ar ais leis an gcéad iarratas eile trí $_COOKIE agus ní mór é a sheiceáil cosúil le haon ionchur eile. Tuilleadh ar an leathanach Superglobals.
session.upload_progress: taispeáint dul chun cinn d'uaslódálacha
Is féidir le PHP dul chun cinn a scríobh isteach sa seisiún le linn uaslódála comhaid. Chuige sin seolann an fhoirm réimse folaithe leis an ainm ó session.upload_progress.name, PHP_SESSION_UPLOAD_PROGRESS de réir réamhshocraithe. Ansin cuireann PHP na sonraí i $_SESSION faoi eochair leis an réimír upload_progress_, le sonraí ar nós am tosaithe, méid iomlán agus bearta próiseáilte cheana.
Tábhachtach le tuiscint: de réir an lámhleabhair, scríobhann PHP an fhaisnéis seo isteach sa seisiún sula ritear aon script. Mar sin oibríonn an fheidhm le linn phróiseáil an iarratais, fós roimh chód an fheidhmchláir. Is den chineál INI_PERDIR a socruithe agus ní féidir iad a athrú le linn an ama rite.
Seisiúin agus PHP2Shell: an beart idirthréimhseach
Mar cheann de na bearta idirthréimhseacha i gcoinne leochaileachtaí PHP2Shell, luann php.net session.upload_progress.enabled=0 a leagan síos in php.ini, sa linn FPM nó i gcumraíocht an fhreastalaí agus gach oibrí a atosú ina dhiaidh sin, go sainráite ní trí ini_set() ná .user.ini. Ar an 23.10.2026 cuireadh an nóta faoi CVE-2026-115560 leis, leis an leigheas céanna go dtí an chéad eisiúint deisithe rialta eile.
; Linn FPM an tsuímh ghréasáin, ansin gach oibrí a atosú
php_admin_flag[session.upload_progress.enabled] = off
De réir tuarascálacha teicniúla, ní dhúnann an socrú seo ina n-aonar an dá leochaileacht. Fanann nuashonrú go PHP 8.5.12, 8.4.27, 8.3.36 nó 8.2.35 éigeantach. An úsáideann d'fheidhmchlár dul chun cinn uaslódála ar chor ar bith agus conas an socrú a leagan síos go buan, déanann an t-alt session.upload_progress a mhúchadh cur síos air.
Conas a chabhraíonn PHP SOS go praiticiúil?
- Léimid amach na socruithe seisiúin atá i bhfeidhm i ndáiríre do gach suíomh gréasáin, ní luachanna na líne ordaithe amháin.
- Leagaimid bearta idirthréimhseacha PHP2Shell síos do gach linn, atosaímid gach oibrí agus seiceálaimid an toradh.
- Scaraimid áiteanna stórála seisiún agus úsáideoirí linne idir suíomhanna gréasáin mar chuid de chruatú freastalaí.
- Tar éis teagmhais, séanaimid gach seisiún atá ann ionas go mbíonn IDanna seisiúin goidte gan luach.
Ceisteanna coitianta
Cad é an difríocht idir cuach agus seisiún?
Is taifead beag é cuach a stórálann an brabhsálaí agus a sheolann sé leis le gach iarratas. Stórálann seisiún na fíorshonraí ar an bhfreastalaí; sa chuach níl ach aitheantóir randamach, an ID seisiúin.
Cé chomh fada a mhaireann seisiún PHP?
Is bailí an chuach seisiúin de réir réamhshocraithe go dtí go ndúntar an brabhsálaí. Féadfar na sonraí ar an bhfreastalaí a ghlanadh tar éis session.gc_maxlifetime, 1440 soicind gan rochtain de réir réamhshocraithe. Cathain a tharlaíonn sé sin i ndáiríre, braitheann sé ar loighic ghlantacháin an chórais.
Cad a dhéanann session.upload_progress?
Scríobhann an fheidhm dul chun cinn le linn uaslódála comhaid isteach sa seisiún ionas gur féidir le dara hiarratas é a thaispeáint. Tá sé gníomhach de réir réamhshocraithe. Mar gheall ar PHP2Shell, molann php.net é a mhúchadh go sealadach ar thaobh an fhreastalaí.
An leor session.upload_progress a mhúchadh trí ini_set()?
Ní leor. Ní féidir an socrú a athrú le linn an ama rite ar aon nós, de réir an lámhleabhair, agus luann php.net go sainráite php.ini, linn FPM nó cumraíocht an fhreastalaí mar na háiteanna ceart, ní ini_set() ná .user.ini. Ansin gach oibrí a atosú.