PHP turvafunktsioon: strip_tags, filter_var, Md5 ja sha1
Vรตimalikud julgeolekuohud
Need on pรตhimรตtteliselt kaks inimrรผhma, kes vรตivad teie sรผsteemi rรผnnata
- Hรคkkerid โ eesmรคrgiga pรครคseda juurde volitamata andmetele vรตi hรคirida rakendust
- Kasutajad โ nad vรตivad sรผรผdimatult sisestada vormidesse valesid parameetreid, millel vรตib olla veebisaidile vรตi veebirakendusele negatiivne mรตju.
Jรคrgmised on rรผnnakute liigid, millele peame tรคhelepanu pรถรถrama.
SQL Injection โ Seda tรผรผpi rรผnnak lisab kahjuliku koodi SQL avaldused.
Seda tehakse kas kasutaja sisestusvormide vรตi URLs, mis kasutavad muutujaid.
Lisatud kood kommenteerib tingimust SQL-lause WHERE-klauslis. Lisatud kood vรตib ka;
- sisestage tingimus, mis on alati tรตsi
- kustutada andmed tabelist
- vรคrskendada andmeid tabelis
- Seda tรผรผpi rรผnnakuid kasutatakse tavaliselt rakendusele volitamata juurdepรครคsu saamiseks.
Saidiรผlene skriptimine โ seda tรผรผpi rรผnnak lisab tavaliselt kahjulikku koodi JavaSkript. Selleks kasutatakse kasutaja sisestusvorme, nagu meiega รผhenduse vรตtmine ja kommentaaride vormid. Seda tehakse selleks;
- Hankige tundlikku teavet, nรคiteks kรผpsiste andmed
- Suuna kasutaja teisele lehele URL.
- Muud ohud vรตivad hรตlmata โ PHP koodi sรผstimist, kesta sรผstimist, e-posti sรผstimist, skripti lรคhtekoodi Code Avalikustamine jne.
PHP rakenduste turvalisuse parimad tavad
Vaatame nรผรผd mรตningaid PHP turvalisuse parimaid tavasid, mida peame arendamisel arvesse vรตtma.ping meie rakendused.
PHP strip_tags
Funktsioonid strip_tags eemaldavad HTML-i, JavaScript vรตi PHP sildid stringist.
See funktsioon on kasulik, kui peame oma rakendust kaitsma rรผnnakute, nรคiteks saidiรผlese skriptimise eest.
Vaatleme rakendust, mis vรตtab vastu kasutajate kommentaare.
<?php $user_input = "Your site rocks"; echo "<h4>My Commenting System</h4>"; echo $user_input; ?>
Eeldades, et olete salvestanud comments.php faili phptuts kausta, sirvige seda URLhttp://localhost/phptuts/comments.php
Oletame, et saate kasutaja sisendiks jรคrgmise alert(โYour site sucks!โ);
<?php
$user_input = "<script>alert('Your site sucks!');</script>";
echo "<h4>My Commenting System</h4>";
echo $user_input;
?>
Sirvige jaotist URL http://localhost/phptuts/comments.php
Kaitskem nรผรผd oma rakendust selliste rรผnnakute eest, kasutades funktsiooni strip_tags.
<?php
$user_input = "<script>alert('Your site sucks!');</script>";
echo strip_tags($user_input);
?>
Sirvige jaotist URL http://localhost/phptuts/comments.php
PHP filter_var funktsioon
Funktsiooni filter_var kasutatakse andmete kinnitamiseks ja puhastamiseks.
Valideerimine kontrollib, kas andmed on รตiget tรผรผpi. Stringi numbriline valideerimiskontroll annab vale tulemuse.
Desinfitseerimine on keelatud tรคhemรคrkide eemaldamine a nรถรถr.
Tรคieliku viite saamiseks vaadake seda linki filter_var
Kood on mรตeldud kommenteerimissรผsteemi jaoks.
See kasutab siltide eemaldamiseks funktsiooni filter_var ja konstanti FILTER_SANITIZE_STRIPPED.
<?php
$user_input = "<script>alert('Your site sucks!');</script>";
echo filter_var($user_input, FILTER_SANITIZE_STRIPPED);
?>
Vรคljund:
alert('Your site sucks!');
mysqli_real_escape_string funktsioon Seda funktsiooni kasutatakse rakenduse kaitsmiseks SQL-i sisestamise eest.
Oletame, et meil on kasutaja ID ja parooli kinnitamiseks jรคrgmine SQL-lause.
<?php SELECT uid,pwd,role FROM users WHERE uid = 'admin' AND password = 'pass'; ?>
Pahatahtlik kasutaja saab sisestada kasutaja ID tekstikasti jรคrgmise koodi. ' VรI 1 = 1 โ ja 1234 parooli tekstikastis kodeerime autentimismooduli
<?php $uid = "' OR 1 = 1 -- "; $pwd = "1234"; $sql = "SELECT uid,pwd,role FROM users WHERE uid = '$uid' AND password = '$pwd';"; echo $sql; ?>
Lรตpptulemus saab olema
SELECT uid,pwd,role FROM users WHERE uid = '' OR 1 = 1 -- ' AND password = '1234';
SIIN,
- โSELECT * FROM users WHERE user_id = โโ testib tรผhja kasutaja ID-d
- "' VรI 1 = 1 " on tingimus, mis on alati tรตene
- โโโ kommenteerib seda osa, mis testib parooli.
รlaltoodud pรคring tagastab kรตik kasutajad. Kasutame nรผรผd oma sisselogimismooduli turvamiseks funktsiooni mysqli_real_escape_string.
<?php
$uid = mysqli_real_escape_string("' OR 1 = 1 -- ");
$pwd = mysqli_real_escape_string("1234");
$sql = "SELECT uid,pwd,role FROM users WHERE uid = '$uid' AND password = '$pwd';";
echo $sql;
?>
Vรคljastatakse รผlaltoodud kood
SELECT uid,pwd,role FROM users WHERE uid = '\' OR 1 = 1 -- ' AND password = '1234';
mรคrkused teine โโรผksiktsitaat on meie jaoks vรคlja jรคetud, seda kรคsitletakse kasutajatunnuse osana ja parooli ei kommenteerita.
PHP Md5 ja PHP sha1
Md5 on akronรผรผm sรตnadest Message Digest 5 ja sha1 on Secure Hash Algorithm 1 akronรผรผm.
Neid mรตlemaid kasutatakse stringide krรผptimiseks.
Kui string on krรผptitud, on selle dekrรผpteerimine tรผรผtu.
Md5 ja sha1 on paroolide andmebaasi salvestamisel vรคga kasulikud.
Allolev kood nรคitab md5 ja sha1 rakendamist
<?php
echo "MD5 Hash: " . md5("password");
echo "SHA1 Hash: " . sha1("password");
?>
Eeldades, et olete salvestanud faili hashes.php phptuts kausta, sirvige URL
Nagu รผlaltoodud rรคsidest nรคha, ei teaks rรผndaja ikkagi sisselogimiseks vajalikke paroole, kui rรผndaja pรครคseks teie andmebaasile juurde.
kokkuvรตte
- Turvalisus viitab meetmetele, mis on kehtestatud rakenduse kaitsmiseks juhuslike ja pahatahtlike rรผnnakute eest.
- strip_tags funktsiooni kasutatakse selliste siltide eemaldamiseks nagu sisendandmetest
- Funktsioon filter_var kinnitab ja php puhastab sisendandmed
- mysqli_real_escape_string kasutatakse SQL-lause puhastamiseks. See eemaldab avaldustest pahatahtlikud mรคrgid
- parooli krรผptimiseks kasutatakse nii MD5 kui ka SHA1.




