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

PHP strip_tags

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

PHP strip_tags

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 strip_tags

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

PHP Md5 ja PHP sha1

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.

Vรตta see postitus kokku jรคrgmiselt: