An cás reatha: PHP2Shell. Ceadaíonn dhá leochaileacht chriticiúla PHP (CVSS 9.2) cód mailíseach gan logáil isteach. Paistí ar fáil ón 21 Deireadh Fómhair 2026.Cad atá le déanamh anois →

Seisiúin i PHP a chosaint: slándáil seisiún PHP sa phraiticiúlacht

Coinníonn seisiúin úsáideoirí logáilte isteach agus mar sin is sprioc luachmhar iad. Seo conas a chumrú tú fianáin, ID seisiúin agus láithreacha stórála go slán agus an chomhairle PHP2Shell faoi upload progress a chur i bhfeidhm.

Staid Am léitheoireachta: 7 nóim.Treoracha

Go achomair: I slándáil seisiún PHP tá ceithre rud tábhachtach: socruithe slána fianán, ID seisiúin nua tar éis gach logáil isteach, láithreacha stórála scartha agus cosanta agus ré ghearr. Mar gheall ar PHP2Shell ba cheart session.upload_progress.enabled=0 a shocrú ar thaobh an fhreastalaí freisin, fad is nach bhfuil aon chúis leis an bhfeidhm seo.

Cén fáth a bhfuil seisiúin ina sprioc luachmhar

Cuimhníonn seisiún go bhfuil úsáideoir logáilte isteach. Go teicniúil faigheann an brabhsálaí ID randamach seisiúin i bhfianán chuige sin, agus stórálann an freastalaí na sonraí gaolmhara. An té a bhfuil an ID ar eolas aige, is é an t-úsáideoir céanna é don fheidhmchlár, gan focal faire agus gan dara fachtóir.

Do oibreoirí ciallaíonn sé seo: is féidir le bainistiú seisiún lag cosaint logáil isteach a chur ar neamhní, fiú nuair a chuirtear focail fhaire agus logáil isteach dhá fhachtóir i bhfeidhm go glan. Tá sé seo thar a bheith criticiúil i réimsí riarthóra, i gcuntais chliant agus i dtairseacha le sonraí pearsanta.

Is iad na rioscaí tipiciúla ná ID an tseisiúin a ghabháil (Session-Hijacking), ID aitheanta a chur isteach roimh logáil isteach (Session-Fixation) agus seisiúin atá bailí ró-fhada ar ríomhairí comhroinnte.

Bunsocruithe slána i php.ini

Is féidir na luachanna is tábhachtaí a shocrú go lárnach i php.ini nó do gach suíomh sa linn FPM. Sa linn úsáideann tú php_admin_value nó php_admin_flag, ionas nach féidir leis an bhfeidhmchlár na luachanna a fhorscríobh.

; Bunchruatú seisiún
session.use_strict_mode   = 1
session.use_only_cookies  = 1
session.use_trans_sid     = 0
session.cookie_httponly   = 1
session.cookie_secure     = 1
session.cookie_samesite   = "Lax"
session.cookie_lifetime   = 0
session.gc_maxlifetime    = 1800
session.name              = "APPSESSID"

; Comhairle PHP2Shell ó php.net, ansin gach oibrí a atosú
session.upload_progress.enabled = 0

Cinntíonn use_strict_mode nach nglacann PHP le haon ID anaithnid a thugann an brabhsálaí. Cuireann cookie_httponly cosc ar JavaScript an ID a léamh, rud a theorannaíonn iarmhairtí Cross-Site Scripting. Ní sheolann cookie_secure an fianán ach trí HTTPS. Déanann SameSite=Lax iarratais Cross-Site le seisiún bailí níos deacra; do réimsí riarthóra amháin d'fhéadfadh Strict a bheith oiriúnach.

Is luach samplach é an ré 1,800 soicind. Socraigh í de réir an riachtanais cosanta: níos giorra don riarachán agus do shonraí cliant, níos faide ach amháin san áit a bhfuil gá leis go gairmiúil.

Tabhair faoi deara nach socraíonn gc_maxlifetime ach ón uair a cheadaítear sonraí seisiún sean a scriosadh. Ar roinnt dáiltí, ní PHP féin a ghlanann na comhaid seisiún, ach jab córais rialta. Seiceáil ansin cén luach a úsáideann an jab sin, ionas go dtéann do shocrú i bhfeidhm i ndáiríre. Ná bí ag brath ar an bhfeidhm ghlantacháin amháin chun logáil amach tar éis easpa gníomhaíochta, ach seiceáil am an ghnímh dheireanaigh san fheidhmchlár féin, mar a thaispeántar sa sampla seo a leanas.

An ID seisiúin a athnuachan tar éis logáil isteach

Is í an riail is tábhachtaí sa chód ná an ID seisiúin a ghiniúint as an nua le gach athrú údaráis, is é sin le logáil isteach, le hathrú go mód riarthóra agus le logáil amach. Taispeánann an sampla seo a leanas patrún glan le password_verify():

<?php
declare(strict_types=1);

session_start();

function anmelden(PDO $db, string $email, string $passwort): bool
{
    $stmt = $db->prepare('SELECT id, passwort_hash FROM benutzer WHERE email = :email');
    $stmt->execute(['email' => $email]);
    $nutzer = $stmt->fetch(PDO::FETCH_ASSOC);

    if (!$nutzer || !password_verify($passwort, $nutzer['passwort_hash'])) {
        return false; // an teachtaireacht chéanna do sheoladh mícheart agus d'fhocal faire mícheart
    }

    session_regenerate_id(true);           // ID nua, an seanchinn a chaitheamh amach
    $_SESSION['benutzer_id']   = (int) $nutzer['id'];
    $_SESSION['letzte_aktion'] = time();
    return true;
}

function pruefeLeerlauf(int $sekunden = 900): void
{
    if (isset($_SESSION['letzte_aktion']) && time() - $_SESSION['letzte_aktion'] > $sekunden) {
        abmelden();
        return;
    }
    $_SESSION['letzte_aktion'] = time();
}

function abmelden(): void
{
    $_SESSION = [];
    $p = session_get_cookie_params();
    setcookie(session_name(), '', [
        'expires'  => time() - 3600,
        'path'     => $p['path'],
        'domain'   => $p['domain'],
        'secure'   => $p['secure'],
        'httponly' => $p['httponly'],
        'samesite' => $p['samesite'],
    ]);
    session_destroy();
}

Ina theannta sin, cosain foirmeacha a athraíonn rud éigin le comhartha CSRF. Giniúintear é le bin2hex(random_bytes(32)), stóráiltear sa seisiún é agus déantar comparáid leis le hash_equals() nuair a sheoltar an fhoirm.

Láithreacha stórála agus scaradh tionóntaí

De réir réamhshocraithe stórálann PHP seisiúin mar chomhaid i gcomhadlann chomhroinnte. Ar fhreastalaí le roinnt suíomhanna gréasáin is féidir go gciallaíonn sé sin gur féidir le suíomh a ndearnadh briseadh isteach air seisiúin suímh eile a léamh. Dá bhrí sin baineann linn ar leith le húsáideoir ar leith agus cosán seisiún ar leith le gach suíomh.

; sa linn FPM den suíomh ábhartha
php_admin_value[session.save_path] = /var/lib/php/sessions/kunde-a

Ba cheart go mbeadh an chomhadlann ag úsáideoir na linne agus na cearta 0700 a bheith aici. Conas suíomhanna a scaradh óna chéile ina theannta sin, déanann an treoir open_basedir agus scaradh do gach suíomh cur síos air. Má stóráiltear seisiúin i Redis nó i mbunachar sonraí, baineann na prionsabail chéanna: rochtain ar leith do gach feidhmchlár, gan rochtain líonra oscailte.

Slándáil seisiún PHP agus PHP2Shell

Tá na leochaileachtaí PHP2Shell CVE-2026-109618 agus CVE-2026-109619 i PHP féin. Mar cheann de na bearta idirthréimhseacha, luann php.net session.upload_progress.enabled=0 a shocrú i 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.

An 23.10.2026 lean comhairle faoi CVE-2026-115560. Ní bhíonn rith cóid indéanta ansin ach le teaglaim neamhghnách de shraitheadú seisiún, athrú trí ini_set() roimh session_start() agus upload progress gníomhach. Is é an réiteach an socrú céanna, go dtí an chéad eisiúint ghnáth eile le ceartúcháin fabhtanna.

Tábhachtach

Is beart idirthréimhseach é an socrú seo agus ní cosaint iomlán. Fanann an nuashonrú go leagan ceartaithe PHP agus an t-atosú ina dhiaidh ar gach oibrí PHP cinntitheach.

Seiceáil tar éis an athraithe cén luach atá i bhfeidhm i ndáiríre. Taispeánann an líne ordaithe cumraíocht dhifriúil go minic ón bhfreastalaí gréasáin; is tairbheach leathanach seiceála cosanta a scriostar arís ina dhiaidh sin nó cumraíocht na linne féin.

Earráidí tipiciúla le seisiúin i bhfeidhmchláir PHP

Ní eascraíonn a lán laigí as socruithe atá ar iarraidh, ach as an gcaoi a n-úsáideann feidhmchláir seisiúin. Ba cheart duit fiafraí go sonrach faoi na patrúin seo i do chód féin agus ag soláthraithe seirbhíse:

  • An iomarca sa seisiún: Ní bhaineann focail fhaire, sonraí iomlána íocaíochta ná tacair mhóra sonraí leis an seisiún. Stóráil an méid atá riachtanach don cheangal amháin, mar shampla ID úsáideora agus róil.
  • Cearta ón seisiún amháin: An té is riarthóir é, ba cheart é a sheiceáil i gcoinne an bhunachair sonraí le gníomhartha criticiúla. Seachas sin fanann cearta a baineadh i bhfeidhm go dtí go dtéann an seisiún in éag.
  • ID seisiúin sa seoladh: Críochnaíonn ID in URLanna i logaí, i stair bhrabhsálaí agus i sonraí Referer. Cuireann use_only_cookies agus use_trans_sid = 0 cosc air sin.
  • Gan deireadh leis an seisiún: Mura bhfuil teorainn ama easpa gníomhaíochta ann, fanann riarthóir logáilte isteach gan teorainn ar ríomhaire comhroinnte.
  • HTTPS aitheanta go mícheart taobh thiar de phróicsaí: Má chríochnaíonn an criptiú ag an gcothromaitheoir ualaigh, caithfidh an feidhmchlár é sin a bheith ar eolas aige. Seachas sin, d'fhéadfadh sé fianáin a shocrú gan bratach Secure.

Tar éis teagmhais slándála baineann sé leis freisin gach seisiún atá ann cheana a chaitheamh amach. Is éasca é sin a dhéanamh trí inneachar chomhadlann na seisiún a scriosadh nó ainm an tseisiúin a athrú. Ansin caithfidh gach úsáideoir logáil isteach as an nua, agus níl aon luach le seisiúin ghoidte.

Conas a chabhraíonn PHP SOS go nithiúil?

  • Seiceálaimid socruithe seisiún, bratacha fianán agus láithreacha stórála ar gach suíomh gréasáin ar fhreastalaí agus doiciméadaímid na luachanna atá i bhfeidhm i ndáiríre.
  • Cuirimid bearta idirthréimhseacha PHP2Shell i bhfeidhm do gach linn, atosaímid na hoibrithe ar bhealach rialaithe agus cruthaímid an toradh.
  • Scarann muid suíomhanna le linnte agus cosáin seisiún ar leith mar chuid den chruatú freastalaí.
  • Do fhorbairtí féin seiceálaimid logáil isteach, logáil amach agus athrú seisiúin sa chód agus molaimid athruithe nithiúla.

Ceisteanna coitianta

Cad is Session-Hijacking ann?

Le Session-Hijacking glacann ionsaitheoir seisiún úsáideora logáilte isteach air féin trí ID seisiúin an úsáideora sin a fháil. Leis an ID is é an t-úsáideoir sin é don fheidhmchlár, gan an focal faire a bheith ar eolas aige. Déanann bratacha fianáin slána agus ré ghearr é seo i bhfad níos deacra.

Cén fáth a gcaithfear an ID seisiúin a ghiniúint as an nua tar éis logáil isteach?

Má fhanann an ID mar a bhí roimh agus tar éis logáil isteach, d'fhéadfadh ID a bhí ar eolas roimhe sin nó a cuireadh isteach bailí a bheith ann tar éis an logála isteach. Giniúnn session_regenerate_id(true) ID nua agus caitheann sé an seanchinn amach.

An féidir liom session.upload_progress.enabled a mhúchadh trí ini_set()?

Ní féidir, ní leor sin de réir php.net. Baineann an socrú le php.ini, leis an linn FPM nó le cumraíocht an fhreastalaí, ní le ini_set() nó le .user.ini. Ansin ní mór gach oibrí PHP a atosú.

Cá háit ar cheart comhaid seisiúin a stóráil?

I gcomhadlann lasmuigh den fhréamhchomhadlann ghréasáin nach bhfuil cead ach ag úsáideoir na linne PHP ábhartha í a léamh. Ar fhreastalaithe le roinnt suíomhanna gréasáin, ba cheart comhadlann seisiún ar leith a bheith ag gach suíomh.

Foinsí

Teagmháil láithreach

Cuireann gach uair an chloig leis. Scríobh chugainn anois.

Déan cur síos gearr ar an gcóras, leagan PHP agus an rud a thug tú faoi deara. Cuirfimid scéala chugat, soiléireoimid an cás agus oibreoimid go cianda go dtí go mbeidh an teagmhas dúnta agus doiciméadaithe.

Cabhair láithreach