Sitwazzjoni attwali: PHP2Shell. Żewġ vulnerabbiltajiet kritiċi ta' PHP (CVSS 9,2) jippermettu kodiċi malizzjuż mingħajr login. Patches mill-21/10/2026.X'għandu jsir issa →

Funzjonijiet tas-sigurtà integrati ta' PHP

PHP jiġi b'blokok sikuri għal passwords, valuri każwali, maskerar, kriptografija u sessjonijiet. Min jużahom b'mod konsistenti jevita l-iżbalji l-aktar komuni fl-applikazzjonijiet.

Stat 5 min. qariGħarfien dwar PHP

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
// 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 u numri każwali u tokens sikuri.

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
$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 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
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.

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.

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 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

Kuntatt immedjat

Kull siegħa tgħodd. Iktbu lilna issa.

Iddeskrivu fil-qosor is-sistema, il-verżjoni ta' PHP u dak li osservajtu. Nikkuntattjawkom, niċċaraw is-sitwazzjoni u naħdmu mill-bogħod sakemm l-inċident jingħalaq u jiġi ddokumentat.

Għajnuna immedjata