# Feidhmeanna slándála ionsuite PHP

> Forbhreathnú ar fheidhmeanna slándála PHP: pasfhocail, randamacht, cosc, cripteagrafaíocht, seisiúin agus cá bhfuil a dteorainneacha i gcás leochaileachtaí ar nós PHP2Shell.

Foinse: https://phpsos.de/ga/php/eingebaute-sicherheitsfunktionen/  
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:** Tugann PHP feidhmeanna réidh, seiceáilte léi do na tascanna slándála is minice: `password_hash()` do phasfhocail, `random_bytes()` agus `random_int()` do chomharthaí, `htmlspecialchars()` i gcoinne Cross-Site-Scripting, ceisteanna ullmhaithe le PDO i gcoinne SQL injection, `hash_equals()` do chomparáidí sábháilte agus an eisínteacht Sodium do chripteagrafaíocht. An té a úsáideann na bloic thógála seo go comhsheasmhach, seachnaíonn sé an chuid is mó de leochaileachtaí feidhmchlár. I gcoinne earráidí san ateangaire PHP féin, mar atá le PHP2Shell, ní chabhraíonn siad; ansin ní chabhraíonn ach an nuashonrú.

## Cén fáth feidhmeanna slándála ionsuite PHP?

Is furasta earráidí a dhéanamh agus cód slándála á scríobh agat féin. Is minic a bhíonn cuma cheart ar hais pasfhocail féin, ar ghineadóir comharthaí a tógadh féin nó ar scagaire a cniotáladh féin d'aschur HTML, ach ní bhíonn sé ceart mar sin féin. Tá na feidhmeanna ionsuite doiciméadaithe, tástáilte agus cothaítear iad le nuashonruithe PHP.

Do lucht cinnteoireachta ciallaíonn sé seo: ná fiafraigh d'd'ghníomhaireacht nó d'fhoireann forbartha an ndearnadh feidhmeanna slándála a thógáil go háitiúil, ach an úsáidtear feidhmeanna caighdeánacha na teanga. Tugann an tábla forbhreathnú.

| Tasc | Feidhm | Ar fáil ó | Nóta tábhachtach |
|---|---|---|---|
| Pasfhocail a stóráil | `password_hash()`, `password_verify()` | PHP 5.5 | colún suas le 255 carachtar; giorraíonn bcrypt go 72 beart |
| Comharthaí randamacha | `random_bytes()`, `random_int()` | PHP 7.0 | gan `rand()` ná `mt_rand()` a úsáid do rúin riamh |
| Randamacht oibiachtdhírithe | `Random\Randomizer` | PHP 8.2 | an tsábháilteacht chéanna, comhéadan níos solúbtha |
| Aschur HTML a chosc | `htmlspecialchars()` | i gcónaí | cosnaíonn comharthaí réamhshocraithe ó 8.1 athfhriotail aonair freisin |
| Comparáid ama chonstaint | `hash_equals()` | PHP 5.6 | ionchur úsáideora mar an dara hargóint |
| Cripteagrafaíocht nua-aimseartha | Sodium (`sodium_*`) | PHP 7.2 | in ionad criptithe féin |
| Rúin i stacktraces | `#[\SensitiveParameter]` | PHP 8.2 | ní fheictear an luach sa trace |
| Ionchuir a sheiceáil | `filter_var()` | PHP 5.2 | seiceálann sé formáid, ní thagann sé in ionad cosc |

## Pasfhocail agus comharthaí

Gineann `password_hash()` hais le salann, seiceálann `password_verify()` é. Le `PASSWORD_DEFAULT` úsáideann PHP bcrypt faoi láthair; ó PHP 8.4 i leith tá an fachtóir costais réamhshocraithe ag 12 in ionad 10 de réir an lámhleabhair. Toisc go bhféadfadh an t-algartam réamhshocraithe athrú, molann an lámhleabhar colún bunachair sonraí le 255 carachtar. Le bcrypt gearrtar pasfhocail tar éis 72 beart, rud atá le tabhairt faoi deara i gcás frásaí faire an-fhada.

```php
<?php
// Clárú
$hash = password_hash($passwort, PASSWORD_DEFAULT);

// Logáil isteach, le huasghrádú uathoibríoch seanhais san áireamh
if (password_verify($eingabe, $hash)) {
    if (password_needs_rehash($hash, PASSWORD_DEFAULT)) {
        $hash = password_hash($eingabe, PASSWORD_DEFAULT); // stóráil as an nua
    }
}

// Comhartha do nasc chun pasfhocal a athshocrú
$token = bin2hex(random_bytes(32));
```

Do chomparáidí rúin, mar shampla sínithe, ba cheart `hash_equals()` a úsáid. De réir an lámhleabhair is féidir le gnáthchomparáid le `===` tríd an am rite a nochtadh ó cén pointe a bhfuil dhá luach difriúil. Níos mionsonraithe: [Pasfhocail a stóráil go sábháilte i PHP](https://phpsos.de/ga/blog/passwoerter-in-php-speichern/) agus [uimhreacha randamacha sábháilte agus comharthaí](https://phpsos.de/ga/blog/sichere-tokens-php/).

## Aschuir a chosc agus an bunachar sonraí a cheistiú go sábháilte

Éiríonn Cross-Site-Scripting nuair a théann ionchuir úsáideora isteach i HTML gan scagadh. Athraíonn `htmlspecialchars()` carachtair speisialta ina n-eintitis HTML. Ó PHP 8.1 is iad `ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401` na bratacha réamhshocraithe; roimhe sin níor athraíodh athfhriotail aonair. An té ar gá dó leaganacha níos sine a thacú, sonraíonn sé na bratacha go sainráite.

Cuireann ceisteanna ullmhaithe cosc ar SQL injection. Aistrítear na luachanna scartha ón téacs SQL agus ní féidir leo an cheist a athrú:

```php
<?php
$stmt = $pdo->prepare('SELECT id, name FROM kunden WHERE email = :email');
$stmt->execute(['email' => $email]);
$kunde = $stmt->fetch();

echo htmlspecialchars($kunde['name'] ?? '', ENT_QUOTES, 'UTF-8');
```

Tá na sonraí ag [Cross-Site-Scripting i PHP a chosc](https://phpsos.de/ga/ratgeber/xss-php/) agus ar an leathanach faoi SQL injection.

Is dara céim ar leith é ionchuir a sheiceáil. Cinntíonn `filter_var()` an bhfuil formáid bhailí ag luach, mar shampla seoladh ríomhphoist nó slánuimhir i raon ceadaithe. Ní thagann sé sin in ionad cosc ag an aschur ná ceist ullmhaithe, mar is féidir carachtair speisialta a bheith i luachanna atá bailí go foirmeálta freisin.

## Rúin a choimeád as teachtaireachtaí earráide

Sceitheadh sonraí nach dtugtar a dhóthain airde air is ea stacktraces. Nuair a tharlaíonn earráid i bhfeidhm, logálann PHP an slabhra glaonna in éineacht le hargóintí. Má tá pasfhocal nó eochair API ann, téann sé isteach sa loga. Ó PHP 8.2 i leith marcálann an tréith `#[\SensitiveParameter]` paraiméadair den sórt sin; ní fheictear a luach sa trace ansin ach mar oibiacht `SensitiveParameterValue`.

```php
<?php
function anmelden(string $benutzer, #[\SensitiveParameter] string $passwort): bool
{
    // ... seiceáil ...
    throw new RuntimeException('Datenbank nicht erreichbar');
}
```

De réir nóta sa lámhleabhar ní oibríonn an tréith ach ar an gcur chun feidhme nithiúil, ní ar mhodh de chuid comhéadain. Socraigh í dá bhrí sin san áit a ritheann an cód i ndáiríre.

## Seisiúin: socruithe sábháilte agus caighdeáin nua

Is sprioc ionsaithe choitianta iad seisiúin. Tá trí shocrú lárnach: diúltaíonn `session.use_strict_mode=1` d'ID seisiúin nár ghin an freastalaí féin; cuireann `session.cookie_httponly=1` cosc ar rochtain trí JavaScript ar chuachóg an tseisiúin; déanann `session.cookie_samesite=Lax` a sheoladh in éineacht ag suíomhanna coimhthíocha níos deacra. De réir RFC glactha, tagann na trí luach seo go beacht chun bheith ina gcaighdeán le PHP 8.6. Socraigh tú féin iad go dtí sin, agus ina dhiaidh freisin go sainráite, ionas nach mbraitheann an chumraíocht ar an gcaighdeán.

```ini
session.use_strict_mode = 1
session.cookie_httponly = 1
session.cookie_samesite = Lax
session.cookie_secure = 1
```

Tuilleadh ag [Seisiúin i PHP a shlánú](https://phpsos.de/ga/ratgeber/session-sicherheit-php/).

## An méid nach ndéanann feidhmeanna ionsuite

Tá tionscadal PHP soiléir ina pholasaí slándála: ní bosca gainimh é PHP. Ní meastar gur leochaileachtaí slándála de chuid PHP iad seachbhóithre ar `open_basedir` nó `disable_functions`, ionchuir mhailíseacha chuig `unserialize()` agus argóintí nár seiceáladh chuig feidhmeanna ar nós `mysqli_query()`. Do oibreoirí ciallaíonn sé sin: is cruatú úsáideach iad na socruithe seo, ach ní teorainn slándála iad, agus níl baint ag `unserialize()` le sonraí coimhthíocha.

Baineann an dara pointe le PHP2Shell. Ceadaíonn CVE-2026-109618 agus CVE-2026-109619 de réir php.net cód a rith sula ritheann d'fheidhmchlár nó le linn dó rith; i gcás mod_php léiríodh exploit sula ritear cód feidhmchláir ar chor ar bith. Ní féidir le feidhm ar bith i do chód é sin a ghabháil. Is dhá dhualgas ar leith iad ríomhchlárú sábháilte agus leagan PHP reatha, agus ní mór an bheirt a chomhlíonadh.

## Conas a chabhraíonn PHP SOS go praiticiúil?

San [iniúchadh slándála d'fheidhmchláir PHP](https://phpsos.de/ga/leistungen/sicherheitsaudit-penetrationstest/) seiceálaimid go sonrach:

- **Láimhseáil pasfhocal agus comharthaí:** An úsáidtear `password_hash()` agus `random_bytes()`, nó an bhfuil forbairtí féin ann?
- **Aschuir agus ceisteanna:** Cá dtéann ionchuir isteach i HTML, SQL nó orduithe sliogáin gan scagadh?
- **Cumraíocht seisiúin:** An bhfuil Strict Mode, HttpOnly, SameSite agus Secure socraithe agus nach féidir iad a shárú?
- **Am rite:** An bhfuil leagan PHP tacaithe ag rith leis na ceartúcháin an 21.10.2026?


## Ceisteanna coitianta

**Conas a stórálann tú pasfhocail i gceart i PHP?**  
Le password_hash() agus PASSWORD_DEFAULT, seiceáiltear le password_verify(). De réir an lámhleabhair ba cheart go dtógfadh colún an bhunachair sonraí suas le 255 carachtar, mar d'fhéadfadh an algartam réamhshocraithe athrú amach anseo.

**An bhfuil rand() oiriúnach do chomharthaí?**  
Níl. Do chomharthaí, eochracha agus naisc pasfhocail ba cheart random_bytes() nó random_int() a úsáid. De réir an lámhleabhair soláthraíonn siad luachanna randamacha slán go cripteagrafach.

**Cathain a cuireadh Sodium isteach i PHP?**  
Tá an eisínteacht Sodium do chripteagrafaíocht nua-aimseartha mar chuid de PHP ó PHP 7.2.0 i leith. I leaganacha níos sine ní raibh sé indéanta é a chur leis ach trí PECL.

**An gcosnaíonn na feidhmeanna seo i gcoinne PHP2Shell?**  
Ní chosnaíonn. Cosnaíonn siad i gcoinne earráidí i d'fheidhmchlár. Tá PHP2Shell san ateangaire féin agus ní dhúntar é ach le nuashonrú PHP, agus ansin atosú gach próisis PHP.

**An athraíonn caighdeáin seisiúin i PHP 8.6?**  
Athraíonn, de réir RFC glactha cuirtear session.use_strict_mode agus session.cookie_httponly ar siúl de réir réamhshocraithe agus socraítear session.cookie_samesite ar Lax. Ba cheart duit do chumraíochtaí atá ann cheana a shocrú go sainráite tú féin mar sin féin.

## Foinsí

- [Lámhleabhar PHP: password_hash()](https://www.php.net/manual/en/function.password-hash.php)
- [Lámhleabhar PHP: random_bytes()](https://www.php.net/manual/en/function.random-bytes.php)
- [Lámhleabhar PHP: hash_equals()](https://www.php.net/manual/en/function.hash-equals.php)
- [PHP RFC: Secure Session Configuration Defaults](https://wiki.php.net/rfc/session_security_defaults)
- [OWASP Cheat Sheet Series](https://cheatsheetseries.owasp.org/)
