PHP biztonsági függvény: strip_tags, filter_var, Md5 és sha1

Lehetséges biztonsági fenyegetések

Ezek alapvetően két embercsoport, akik megtámadhatják a rendszert

  • Hackerek – azzal a szándékkal, hogy jogosulatlan adatokhoz férjenek hozzá, vagy megzavarják az alkalmazást
  • Felhasználók – ártatlanul rossz paramétereket írhatnak be az űrlapokon, amelyek negatív hatással lehetnek egy webhelyre vagy webes alkalmazásra.

Az alábbiakban felsoroljuk azokat a támadásokat, amelyekre figyelnünk kell.

SQL Injection – Ez a fajta támadás káros kódot fűz hozzá SQL nyilatkozatokat.

Ez felhasználói beviteli űrlapokkal vagy változókat használó URL-ekkel történik.

A hozzáfűzött kód megjegyzést fűz egy SQL utasítás WHERE záradékában lévő feltételhez. A mellékelt kód is;

  • beilleszteni egy feltételt, amely mindig igaz
  • adatok törlése egy táblából
  • táblázatban frissítse az adatokat
  • Az ilyen típusú támadásokat általában egy alkalmazáshoz való jogosulatlan hozzáférésre használják.

Webhelyek közötti szkriptelés – az ilyen típusú támadások általában káros kódot szúrnak be JavaForgatókönyv. Ez a felhasználói beviteli űrlapok használatával történik, például a kapcsolatfelvételi űrlapokkal és a megjegyzés űrlapokkal. Ez azért történik, hogy;

  • Érzékeny információk lekérése, mint pl cookie-k adatai
  • A felhasználó átirányítása egy másik URL-re.
  • Egyéb fenyegetések lehetnek – PHP kódbefecskendezés, Shell-befecskendezés, e-mail-befecskendezés, Script Source Code Disclosure stb.

PHP alkalmazásbiztonsági bevált gyakorlatok

Lássunk most néhány PHP Security bevált gyakorlatot, amelyeket figyelembe kell vennünk alkalmazásaink fejlesztése során.

PHP strip_tags

A strip_tags függvény eltávolítja a HTML-t, JavaForgatókönyv vagy PHP címkéket egy karakterláncból.

Ez a funkció akkor hasznos, ha meg kell védenünk alkalmazásunkat olyan támadások ellen, mint például a webhelyek közötti szkriptek.

Vegyünk egy olyan alkalmazást, amely elfogadja a felhasználók megjegyzéseit.

<?php

$user_input = "Your site rocks";

echo "<h4>My Commenting System</h4>";

echo $user_input;

?>

Feltéve, hogy a comments.php fájlt a phptuts mappába mentette, keresse meg az URL-thttp://localhost/phptuts/comments.php

PHP strip_tags

Tegyük fel, hogy a következőt kapja felhasználói bevitelként alert(‘Your site sucks!’);

<?php

$user_input = "<script>alert('Your site sucks!');</script>";

echo "<h4>My Commenting System</h4>";

echo $user_input;

?>

Keresse meg az URL-t http://localhost/phptuts/comments.php

PHP strip_tags

Most védjük alkalmazásunkat az ilyen támadásoktól a strip_tags függvény segítségével.

<?php

$user_input = "<script>alert('Your site sucks!');</script>";

echo strip_tags($user_input);

?>

Keresse meg az URL-t http://localhost/phptuts/comments.php

PHP strip_tags

PHP filter_var függvény

A filter_var függvény az adatok ellenőrzésére és megtisztítására szolgál.

Az érvényesítés ellenőrzi, hogy az adatok megfelelő típusúak-e. Egy karakterlánc numerikus ellenőrzése hamis eredményt ad vissza.

A fertőtlenítés az illegális karakterek eltávolítását jelenti a húr.

Tekintse meg ezt a linket a teljes hivatkozásért filter_var

A kód a kommentelő rendszerhez tartozik.

A filter_var függvényt és a FILTER_SANITIZE_STRIPED konstanst használja a címkék eltávolításához.

<?php

$user_input = "<script>alert('Your site sucks!');</script>";

echo filter_var($user_input, FILTER_SANITIZE_STRIPPED);

?>

output:

alert('Your site sucks!');

mysqli_real_escape_string függvény Ez a funkció egy alkalmazás SQL-injektálás elleni védelmére szolgál.

Tegyük fel, hogy a következő SQL utasítással rendelkezünk a felhasználói azonosító és jelszó érvényesítéséhez.

<?php
SELECT uid,pwd,role FROM users WHERE uid = 'admin' AND password = 'pass';
?>

A rosszindulatú felhasználó beírhatja a következő kódot a felhasználói azonosító szövegmezőbe. ' VAGY 1 = 1 — És 1234 a jelszó mezőben Kódoljuk a hitelesítő modult

<?php

$uid = "' OR 1 = 1 -- ";

$pwd = "1234";

$sql = "SELECT uid,pwd,role FROM users WHERE uid = '$uid' AND password = '$pwd';";

echo $sql;

?>

A végeredmény az lesz

SELECT uid,pwd,role FROM users WHERE uid = '' OR 1 = 1 -- ' AND password = '1234';

ITT,

  • A „SELECT * FROM users WHERE user_id = ”” üres felhasználói azonosítót tesztel
  • Az "' VAGY 1 = 1" egy olyan feltétel, amely mindig igaz
  • A „–” megjegyzés jelzi azt a részt, amely teszteli a jelszót.

A fenti lekérdezés az összes felhasználót visszaadja. Használjuk a mysqli_real_escape_string függvényt a bejelentkezési modulunk védelmére.

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

?>

A fenti kód jelenik meg

SELECT uid,pwd,role FROM users WHERE uid = '\' OR 1 = 1 -- ' AND password = '1234';

Megjegyzések a második egyetlen idézetet kihagytuk nekünk, azt a felhasználói azonosító részeként kezeljük, és a jelszót nem kommentáljuk.

PHP Md5 és PHP sha1

Az Md5 a Message Digest 5 mozaikszó, az sha1 pedig a Secure Hash Algorithm 1 rövidítése.

Mindkettőt karakterláncok titkosítására használják.

Miután egy karakterláncot titkosítottak, unalmas a visszafejtése.

Az Md5 és sha1 nagyon hasznosak a jelszavak adatbázisban való tárolásánál.

Az alábbi kód az md5 és sha1 megvalósítását mutatja be

<?php
echo "MD5 Hash: " . md5("password");
echo "SHA1 Hash: " . sha1("password");
?>

Feltéve, hogy a hashes.php fájlt a phptuts mappába mentette, keresse meg az URL-t

PHP Md5 és PHP sha1

Amint a fenti kivonatokból is látható, ha egy támadó hozzáférne az adatbázishoz, még mindig nem ismerné a bejelentkezéshez szükséges jelszavakat.

Összegzésként

  • A biztonság az alkalmazások véletlen és rosszindulatú támadások elleni védelmére szolgáló intézkedésekre vonatkozik.
  • A strip_tags függvény olyan címkék eltávolítására szolgál, mint pl bemeneti adatokból
  • A filter_var függvény érvényesíti és php megtisztítja a bemeneti adatokat
  • A mysqli_real_escape_string az SQL utasítás megtisztítására szolgál. Eltávolítja a rosszindulatú karaktereket az állításokból
  • az MD5 és az SHA1 is a jelszó titkosítására szolgál.