# Seisiúin i PHP a chosaint: slándáil seisiún PHP sa phraiticiúlacht

> Slándáil seisiún PHP: luachanna slána php.ini, ID seisiúin nua tar éis logáil isteach, bratacha fianán agus comhairle PHP2Shell faoi uaslódálacha.

Foinse: https://phpsos.de/ga/ratgeber/session-sicherheit-php/  
Staid: 25/10/2026  
Soláthraí: PHP SOS, Cabhair éigeandála PHP agus slándáil freastalaí. Cabhair láithreach trí WhatsApp: https://wa.me/491736494914?text=Dia%20duit%2C%20a%20PHP%20SOS%2C%20t%C3%A1%20cabhair%20de%20dh%C3%ADth%20orainn%20len%C3%A1r%20bhfreastala%C3%AD%20PHP.%20Cuideachta%3A%20%E2%80%A6%20Su%C3%ADomh%20gr%C3%A9as%C3%A1in%3A%20%E2%80%A6

**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.

```ini
; 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
<?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.

```ini
; 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](https://phpsos.de/ga/ratgeber/open-basedir/) 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](https://phpsos.de/ga/php2shell/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](https://phpsos.de/ga/php2shell/php-fpm-neustart/) 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í](https://phpsos.de/ga/leistungen/server-haertung/).
- 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í

- [OWASP Cheat Sheet Series (Session Management)](https://cheatsheetseries.owasp.org/)
- [php.net: tuarascálacha slándála maidir le PHP2Shell](https://www.php.net/)
- [PHP 8 ChangeLog](https://www.php.net/ChangeLog-8.php)
