# Funzjonijiet tas-sigurtà integrati ta' PHP

> Funzjonijiet tas-sigurtà ta' PHP f'ħarsa: passwords, każwalità, maskerar, kriptografija, sessjonijiet u fejn jinsabu l-limiti tagħhom f'vulnerabbiltajiet bħal PHP2Shell.

Sors: https://phpsos.de/mt/php/eingebaute-sicherheitsfunktionen/  
Stat: 25/10/2026  
Fornitur: PHP SOS, Għajnuna ta' emerġenza għal PHP u sigurtà tas-server. Għajnuna immedjata fuq WhatsApp: https://wa.me/491736494914?text=Bongu%20PHP%20SOS%2C%20g%C4%A7andna%20b%C5%BConn%20g%C4%A7ajnuna%20bis-server%20tal-PHP%20tag%C4%A7na.%20Kumpanija%3A%20%E2%80%A6%20Websajt%3A%20%E2%80%A6

**Fil-qosor:** PHP jiġi b'funzjonijiet lesti u ttestjati għall-kompiti tas-sigurtà l-aktar komuni: `password_hash()` għal passwords, `random_bytes()` u `random_int()` għal tokens, `htmlspecialchars()` kontra cross-site scripting, mistoqsijiet ippreparati b'PDO kontra SQL injection, `hash_equals()` għal tqabbil sikur u l-estensjoni Sodium għal kriptografija. Min juża dawn il-blokok b'mod konsistenti jevita l-biċċa l-kbira tal-vulnerabbiltajiet tal-applikazzjoni. Kontra żbalji fl-interpretatur ta' PHP innifsu, bħal PHP2Shell, ma jgħinux; hemmhekk jgħin biss l-aġġornament.

## Għaliex funzjonijiet tas-sigurtà integrati ta' PHP?

Li tikteb kodiċi tas-sigurtà waħdek huwa suxxettibbli għal żbalji. Hash tal-password proprju, ġeneratur ta' tokens magħmul waħdu jew filtru magħmul b'mod improvizzat għall-output HTML spiss jidhru korretti u madankollu ma humiex. Il-funzjonijiet integrati huma ddokumentati, ittestjati u miżmuma bl-aġġornamenti ta' PHP.

Għal min jieħu d-deċiżjonijiet dan ifisser: la tistaqsux lill-aġenzija jew lit-tim tal-iżvilupp tagħkom jekk funzjonijiet tas-sigurtà nbnewx waħedhom, imma jekk jintużawx il-funzjonijiet standard tal-lingwa. It-tabella tagħti ħarsa ġenerali.

| Kompitu | Funzjoni | Disponibbli minn | Nota importanti |
|---|---|---|---|
| Ħażna ta' passwords | `password_hash()`, `password_verify()` | PHP 5.5 | Kolonna sa 255 karattru; bcrypt jaqta' fuq 72 byte |
| Tokens każwali | `random_bytes()`, `random_int()` | PHP 7.0 | qatt `rand()` jew `mt_rand()` għal sigrieti |
| Każwalità orjentata għall-oġġetti | `Random\Randomizer` | PHP 8.2 | l-istess sigurtà, interface aktar flessibbli |
| Maskerar tal-output HTML | `htmlspecialchars()` | minn dejjem | Flags standard minn 8.1 jimmaskraw ukoll virgoletti singoli |
| Tqabbil f'ħin kostanti | `hash_equals()` | PHP 5.6 | Input tal-utent bħala t-tieni argument |
| Kriptografija moderna | Sodium (`sodium_*`) | PHP 7.2 | minflok kriptaġġ proprju |
| Sigrieti fi stacktraces | `#[\SensitiveParameter]` | PHP 8.2 | Il-valur ma jidhirx fit-trace |
| Verifika tal-inputs | `filter_var()` | PHP 5.2 | jivverifika l-format, ma jissostitwixxix il-maskerar |

## Passwords u tokens

`password_hash()` joħloq hash bil-melħ, `password_verify()` jivverifikah. Bi `PASSWORD_DEFAULT` PHP bħalissa juża bcrypt; minn PHP 8.4 il-fattur standard tal-ispiża, skont il-manwal, huwa 12 minflok 10. Peress li l-algoritmu standard jista' jinbidel, il-manwal jirrakkomanda kolonna tad-database b'255 karattru. Fil-każ ta' bcrypt, il-passwords jinqatgħu wara 72 byte, li jrid jitqies fil-każ ta' passphrases twal ħafna.

```php
<?php
// Reġistrazzjoni
$hash = password_hash($passwort, PASSWORD_DEFAULT);

// Login, inkluż titjib awtomatiku ta' hashes qodma
if (password_verify($eingabe, $hash)) {
    if (password_needs_rehash($hash, PASSWORD_DEFAULT)) {
        $hash = password_hash($eingabe, PASSWORD_DEFAULT); // aħżen mill-ġdid
    }
}

// Token għal link biex jiġi rrisettjat il-password
$token = bin2hex(random_bytes(32));
```

Għat-tqabbil ta' sigrieti, pereżempju firma, għandu jintuża `hash_equals()`. Tqabbil normali b'`===` jista', skont il-manwal, jiżvela permezz tal-ħin tat-tħaddim minn liema post jiddiferenzjaw żewġ valuri. B'aktar dettall: [Kif taħżnu l-passwords b'mod sikur f'PHP](https://phpsos.de/mt/blog/passwoerter-in-php-speichern/) u [numri każwali u tokens sikuri](https://phpsos.de/mt/blog/sichere-tokens-php/).

## Maskerar tal-output u mistoqsijiet sikuri lid-database

Cross-site scripting jinqala' meta inputs tal-utent jispiċċaw f'HTML mhux iffiltrati. `htmlspecialchars()` jibdel karattri speċjali f'entitajiet HTML. Minn PHP 8.1 il-flags standard huma `ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401`; qabel, virgoletti singoli ma kinux jinbidlu. Min irid jappoġġa verżjonijiet eqdem jindika l-flags espliċitament.

SQL injection tevitaha mistoqsijiet ippreparati. Il-valuri jintbagħtu separatament mit-test SQL u ma jistgħux jibdlu l-mistoqsija:

```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');
```

Id-dettalji jinsabu taħt [Kif tevitaw cross-site scripting f'PHP](https://phpsos.de/mt/ratgeber/xss-php/) u fil-paġna dwar SQL injection.

Il-verifika tal-inputs hija t-tieni pass separat. `filter_var()` jistabbilixxi jekk valur għandux format validu, pereżempju indirizz tal-email jew numru sħiħ f'firxa permessa. Dan madankollu ma jissostitwixxix il-maskerar fl-output u lanqas mistoqsija ppreparata, għax anki valuri formalment validi jistgħu jkun fihom karattri speċjali.

## Żomm is-sigrieti 'l bogħod mill-messaġġi ta' żball

Tnixxija ta' data sottovalutata huma l-stacktraces. Meta jseħħ żball f'funzjoni, PHP jirreġistra l-katina tat-telefonati flimkien mal-argumenti. Jekk hemm password jew ċavetta API, tispiċċa fil-log. Minn PHP 8.2 l-attribut `#[\SensitiveParameter]` jimmarka parametri bħal dawn; il-valur tagħhom mbagħad jidher fit-trace biss bħala oġġett `SensitiveParameterValue`.

```php
<?php
function anmelden(string $benutzer, #[\SensitiveParameter] string $passwort): bool
{
    // ... verifika ...
    throw new RuntimeException('Datenbank nicht erreichbar');
}
```

Skont nota fil-manwal, l-attribut jaħdem biss fuq l-implimentazzjoni konkreta, mhux fuq il-metodu ta' interface. Issettjawh għalhekk fejn il-kodiċi verament jaħdem.

## Sessjonijiet: issettjar sikur u standards ġodda

Is-sessjonijiet huma mira komuni ta' attakki. Tliet issettjar huma ċentrali: `session.use_strict_mode=1` jirrifjuta session IDs li s-server ma ħoloqx hu; `session.cookie_httponly=1` jipprevjeni l-aċċess permezz ta' JavaScript għall-cookie tas-sessjoni; `session.cookie_samesite=Lax` jagħmilha aktar diffiċli li jintbagħat ma' paġni barranin. Skont RFC aċċettat, eżatt dawn it-tliet valuri jsiru l-istandard b'PHP 8.6. Issettjawhom intom sa dakinhar, u anki wara espliċitament, biex il-konfigurazzjoni ma tiddependix mill-istandard.

```ini
session.use_strict_mode = 1
session.cookie_httponly = 1
session.cookie_samesite = Lax
session.cookie_secure = 1
```

Aktar dwar dan taħt [Kif tassiguraw is-sessjonijiet f'PHP](https://phpsos.de/mt/ratgeber/session-sicherheit-php/).

## Dak li l-funzjonijiet integrati ma jagħmlux

Il-proġett PHP huwa ċar fil-politika tas-sigurtà tiegħu: PHP mhuwiex sandbox. Evażjonijiet ta' `open_basedir` jew `disable_functions`, inputs malizzjużi għal `unserialize()` u argumenti mhux ivverifikati għal funzjonijiet bħal `mysqli_query()` ma jitqisux vulnerabbiltajiet tas-sigurtà ta' PHP. Dan ifisser għall-operaturi: dawn l-issettjar huma tishiħ utli, imma mhumiex konfini tas-sigurtà, u `unserialize()` m'għandu x'jaqsam xejn ma' data barranija.

It-tieni punt jikkonċerna PHP2Shell. CVE-2026-109618 u CVE-2026-109619 jippermettu, skont php.net, eżekuzzjoni ta' kodiċi qabel jew waqt li taħdem l-applikazzjoni tagħkom; b'mod_php intwera exploit qabel ma jiġi eżegwit xi kodiċi tal-applikazzjoni. L-ebda funzjoni fil-kodiċi tagħkom ma tista' tillimita dan. Programmar sikur u verżjoni aġġornata ta' PHP huma żewġ obbligi separati, u t-tnejn iridu jiġu sodisfatti.

## Kif jgħin PHP SOS konkretament?

Fl-[awditu tas-sigurtà għal applikazzjonijiet PHP](https://phpsos.de/mt/leistungen/sicherheitsaudit-penetrationstest/) niċċekkjaw b'mod immirat:

- **Immaniġġjar tal-passwords u tat-tokens:** Jintużaw `password_hash()` u `random_bytes()`, jew hemm bini proprju?
- **Outputs u mistoqsijiet:** Fejn jispiċċaw inputs mhux iffiltrati f'HTML, SQL jew kmandi tal-shell?
- **Konfigurazzjoni tas-sessjonijiet:** Strict Mode, HttpOnly, SameSite u Secure huma ssettjati u ma jistgħux jiġu sostitwiti?
- **Runtime:** Taħdem verżjoni appoġġata ta' PHP bil-korrezzjonijiet tal-21 ta' Ottubru 2026?


## Mistoqsijiet frekwenti

**Kif jinħażnu l-passwords sewwa f'PHP?**  
B'password_hash() u PASSWORD_DEFAULT, il-verifika ssir b'password_verify(). Il-kolonna tad-database, skont il-manwal, għandha tkun tista' żżomm sa 255 karattru, għax l-algoritmu standard jista' jinbidel fil-futur.

**rand() huwa adattat għal tokens?**  
Le. Għal tokens, ċwievet u links tal-password għandhom jintużaw random_bytes() jew random_int(). Skont il-manwal jagħtu valuri każwali sikuri kriptografikament.

**Minn meta Sodium huwa inkluż f'PHP?**  
L-estensjoni Sodium għal kriptografija moderna hija parti minn PHP minn PHP 7.2.0. Verżjonijiet eqdem setgħu jżiduha biss permezz ta' PECL.

**Dawn il-funzjonijiet jipproteġu minn PHP2Shell?**  
Le. Jipproteġu minn żbalji fl-applikazzjoni tagħkom. PHP2Shell jinsab fl-interpretatur innifsu u jingħalaq biss b'aġġornament ta' PHP, segwit mir-restart tal-proċessi kollha ta' PHP.

**L-istandards tas-sessjonijiet jinbidlu f'PHP 8.6?**  
Iva, skont RFC aċċettat, session.use_strict_mode u session.cookie_httponly jinxtegħlu b'mod awtomatiku u session.cookie_samesite jiġi ssettjat fuq Lax. Madankollu għandkom tissettjaw konfigurazzjonijiet eżistenti b'mod espliċitu intom stess.

## Sorsi

- [Manwal ta' PHP: password_hash()](https://www.php.net/manual/en/function.password-hash.php)
- [Manwal ta' PHP: random_bytes()](https://www.php.net/manual/en/function.random-bytes.php)
- [Manwal ta' 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/)
