PHP-suojaustoiminto: strip_tags, filter_var, Md5 ja sha1
Mahdolliset turvallisuusuhat
Ne ovat periaatteessa kaksi ihmisryhmää, jotka voivat hyökätä järjestelmääsi
- Hakkerit – tarkoituksenaan päästä luvattomiin tietoihin tai häiritä sovellusta
- Käyttäjät – he voivat syyttömästi syöttää vääriä parametreja lomakkeisiin, joilla voi olla kielteisiä vaikutuksia verkkosivustoon tai verkkosovellukseen.
Seuraavat ovat hyökkäystyyppejä, joita meidän on varottava.
SQL Injection – Tämäntyyppinen hyökkäys lisää haitallista koodia SQL lausuntoja.
Tämä tehdään joko käyttäjän syöttölomakkeiden tai muuttujia käyttävien URL-osoitteiden avulla.
Lisätty koodi kommentoi ehtoa SQL-käskyn WHERE-lauseessa. Liitteenä oleva koodi voi myös;
- lisää ehto, joka on aina totta
- poistaa tiedot taulukosta
- päivittää tiedot taulukossa
- Tämän tyyppistä hyökkäystä käytetään yleensä luvattoman pääsyn saamiseksi sovellukseen.
Sivustojen välinen komentosarja – Tämäntyyppinen hyökkäys lisää yleensä haitallista koodia JavaKäsikirjoitus. Tämä tehdään käyttämällä käyttäjien syöttölomakkeita, kuten yhteydenotto- ja kommenttilomakkeita. Tämä tehdään;
- Hae arkaluonteisia tietoja, kuten evästeiden tiedot
- Ohjaa käyttäjä toiseen URL-osoitteeseen.
- Muita uhkia voivat olla - PHP-koodin lisäys, Shell-injektio, sähköpostin lisäys, komentosarjan lähdekoodin paljastaminen jne.
PHP-sovellusten suojauksen parhaat käytännöt
Katsotaanpa nyt joitain PHP Securityn parhaista käytännöistä, jotka meidän on otettava huomioon sovelluksiamme kehitettäessä.
PHP strip_tags
strip_tags-funktiot poistavat HTML:n, JavaKäsikirjoitus tai PHP-tageja merkkijonosta.
Tämä toiminto on hyödyllinen, kun meidän on suojattava sovelluksemme hyökkäyksiltä, kuten sivustojen väliseltä komentosarjalta.
Tarkastellaan sovellusta, joka hyväksyy käyttäjien kommentteja.
<?php $user_input = "Your site rocks"; echo "<h4>My Commenting System</h4>"; echo $user_input; ?>
Jos olet tallentanut comments.php-tiedoston phptuts-kansioon, selaa URL-osoitteeseenhttp://localhost/phptuts/comments.php
Oletetaan, että saat seuraavan syötteenä alert(‘Your site sucks!’);
<?php $user_input = "<script>alert('Your site sucks!');</script>"; echo "<h4>My Commenting System</h4>"; echo $user_input; ?>
Selaa URL-osoitteeseen http://localhost/phptuts/comments.php
Suojataan nyt sovelluksemme tällaisilta hyökkäyksiltä strip_tags-toiminnolla.
<?php $user_input = "<script>alert('Your site sucks!');</script>"; echo strip_tags($user_input); ?>
Selaa URL-osoitteeseen http://localhost/phptuts/comments.php
PHP filter_var-funktio
Filter_var-funktiota käytetään tietojen vahvistamiseen ja puhdistamiseen.
Validointi tarkistaa, ovatko tiedot oikean tyyppisiä. Merkkijonon numeerinen vahvistuksen tarkistus palauttaa väärän tuloksen.
Desinfiointi tarkoittaa laittomien merkkien poistamista a jono.
Tarkista tästä linkistä täydellinen viite filter_var
Koodi on tarkoitettu kommentointijärjestelmään.
Se käyttää toimintoa filter_var ja FILTER_SANITIZE_STRIPED vakiota tunnisteiden poistamiseen.
<?php $user_input = "<script>alert('Your site sucks!');</script>"; echo filter_var($user_input, FILTER_SANITIZE_STRIPPED); ?>
lähtö:
alert('Your site sucks!');
mysqli_real_escape_string-funktio Tätä toimintoa käytetään suojaamaan sovellus SQL-injektiolta.
Oletetaan, että meillä on seuraava SQL-käsky käyttäjätunnuksen ja salasanan vahvistamiseksi.
<?php SELECT uid,pwd,role FROM users WHERE uid = 'admin' AND password = 'pass'; ?>
Haitallinen käyttäjä voi kirjoittaa seuraavan koodin käyttäjätunnuksen tekstiruutuun. ' TAI 1 = 1 — ja 1234 salasanan tekstikentässä Koodataan todennusmoduuli
<?php $uid = "' OR 1 = 1 -- "; $pwd = "1234"; $sql = "SELECT uid,pwd,role FROM users WHERE uid = '$uid' AND password = '$pwd';"; echo $sql; ?>
Lopputulos tulee olemaan
SELECT uid,pwd,role FROM users WHERE uid = '' OR 1 = 1 -- ' AND password = '1234';
TÄSSÄ,
- "SELECT * FROM users WHERE user_id = "" testaa tyhjää käyttäjätunnusta
- "' TAI 1 = 1 " on ehto, joka on aina totta
- “–” kommentoi salasanaa testaavaa osaa.
Yllä oleva kysely palauttaa kaikki käyttäjät. Käytetään nyt mysqli_real_escape_string-funktiota kirjautumismoduulimme suojaamiseen.
<?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; ?>
Yllä oleva koodi tulostuu
SELECT uid,pwd,role FROM users WHERE uid = '\' OR 1 = 1 -- ' AND password = '1234';
Huomautuksia toinen lainaus on jätetty meille, se käsitellään osana käyttäjätunnusta eikä salasanaa kommentoida.
PHP Md5 ja PHP sha1
Md5 on lyhenne sanoista Message Digest 5 ja sha1 on lyhenne sanoista Secure Hash Algorithm 1.
Molempia käytetään merkkijonojen salaamiseen.
Kun merkkijono on salattu, sen salauksen purkaminen on tylsää.
Md5 ja sha1 ovat erittäin hyödyllisiä salasanojen tallentamisessa tietokantaan.
Alla oleva koodi näyttää md5:n ja sha1:n toteutuksen
<?php echo "MD5 Hash: " . md5("password"); echo "SHA1 Hash: " . sha1("password"); ?>
Jos olet tallentanut tiedoston hashes.php phptuts-kansioon, selaa URL-osoitteeseen
Kuten yllä olevista tiivisteistä näet, jos hyökkääjä pääsisi tietokantaasi, hän ei silti tietäisi kirjautumisen salasanoja.
Yhteenveto
- Suojauksella tarkoitetaan toimenpiteitä, jotka on otettu käyttöön sovelluksen suojaamiseksi vahingossa ja haitallisilta hyökkäyksiltä.
- strip_tags-funktiota käytetään poistamaan tunnisteita, kuten syöttötiedoista
- filter_var-toiminto vahvistaa ja php puhdistaa syötetiedot
- mysqli_real_escape_stringiä käytetään SQL-lauseen puhdistamiseen. Se poistaa haitalliset merkit lausunnoista
- sekä MD5:tä että SHA1:tä käytetään salasanojen salaamiseen.