Ruka hadi maudhui
Tunajenga kwa 2026 — tuambie timu yako inahitaji nini. Anza mradi
Sembosi Digital Sembosi Digital

Kuandika PHP Salama: Mbinu 10 Tunazotumia Kila Mradi

PHP Dakika 3
Kuandika PHP Salama: Mbinu 10 Tunazotumia Kila Mradi

PHP inaendeshwa na sehemu kubwa ya wavuti, na hilo pia inafanya iwe lengo lapendwa. Hizi ni tabia zinazoweka mifumo tunayojenga nje ya ripoti za uvujaji.

Mara nyingi matatizo ya usalama wa PHP si ya kipekee. Ni makosa machache yaleile, yanayorudiwa. Baada ya kujenga mifumo ya biashara, majukwaa ya hospitali na API, hizi ni mbinu tunazozichukulia kama zisizoweza kukosekana.

1. Tumia prepared statements daima

Usijenge SQL kwa kuunganisha kamba. Kwa PDO inaonekana hivi:

$stmt = $pdo->prepare('SELECT * FROM patients WHERE hospital_no = :no');
$stmt->execute(['no' => $hospitalNo]);
$patient = $stmt->fetch();

Prepared statements hutenga msimbo na data, na kwa hivyo huondoa sindano ya SQL kama aina ya hitilafu badala ya hatua kwa hatua ya hatari.

2. Hati neno la siri kwa password_hash

Usiandike hati yako mwenyewe, na usitumie md5 au sha1 kwa neno la siri.

$hash = password_hash($password, PASSWORD_DEFAULT);
password_verify($inputPassword, $hash); // boolean

PASSWORD_DEFAULT kwa sasa inamaanisha bcrypt na itahamia kwa algorithm zenye nguvu zaidi kadiri muda unavyosogea. Hati zilizopo zinaendelea kuthibitishwa, na unaweza kufanya upya kuingia kukibadilika kwa gharama.

3. Epuka matokeo, si ingizo

echo htmlspecialchars($userInput, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');

Hifadhi data kama inavyofika; epuka mahali inapotolewa. Kuepuka kwenye ingizo huharibu data, kuepuka kwenye matokeo huzuia XSS.

4. Thibitisha kwa orodha za kuruhusu

Kagua kuwa thamani ni moja ya thamani unazotarajia, badala ya kuzuia zile unazogopa.

$allowed = ['reception', 'clinician', 'lab', 'pharmacy'];
if (!in_array($role, $allowed, true)) {
    http_response_code(400);
    exit('Invalid role');
}

5. Sanidi vipindi vizuri

session_set_cookie_params([
    'httponly' => true,
    'secure' => true,
    'samesite' => 'Lax',
]);
session_start();

Tengeneza upya kitambulisho cha kipindi baada ya kuingia ili kuzuia kufungwa kwa kipindi.

6. Linda fomu kwa tokeni za CSRF

Kila ombi linalobadilisha hali linapaswa kubeba tokeni inayohusishwa na kipindi cha mtumiaji, iliyothibitishwa kwa kulinganisha kwa muda thabiti.

7. Usiwahi kufichua nywila

Nywila za hifadhidata, funguo za API na tokeni zinafaa kuwa kwenye vigezo vya mazingira au faili nje ya mzizi wa wavuti. Faili moja la .env linalotolewa kama maandishi kwa bahati mbaba limevuja hifadhidata za uzalishaji zaidi ya mbinu yoyote ya kisasa.

8. Chukulia upakiazi kama wa uadui

Thibitisha aina ya MIME na ugani, hifadhi nje ya mzizi wa wavuti au toa kupitia kidhibiti, tengeneza majina ya nasibu, na usiwahi kutekeleza chochote kutoka saraka ya upakiazi.

9. Zima ripoti ya makosa kwenye uzalishaji

Onyesha watumiaji ukurasa wa kirafiki; rekodi maelezo kwa faragha. Nyayo za mzigo kwenye uzalishaji ni ramani ya bure ya mfumo wako wa faili.

10. Weka kikomo cha uthibitishaji

Weka kikomo cha majaribio ya kuingia kwa kila akaunti na kila IP, ongeza kurudi nyuma kwa kiwango kinachokua, na rekodi makosa. Ulinzi dhidi ya nguvu si ya hiari kwa paneli za utawala.

Hakuna hii inayochanganya. Ni nidhamu tu. Mifumo tunayojenga huchukulia hizi kama chaguomsingi, na mazungumzo ya matengenezo baadaye ni mafupi zaidi kwa sababu hiyo.