PHP on yksi suosituimmista ohjelmointikielistä webissä. Se auttaa kehittäjiä ohjelmoimaan hienoimmat sovellukset ja luomaan uusia vertailukohtia mobiili- ja verkkokehitykseen. Suurin huolenaihe PHP-sovelluksen kehittämisessä on kuitenkin turvallisuus, mikä tekee suojattujen PHP-sovellusten kehittämisestä suuren haasteen erityisesti amatööreille. Tässä artikkelissa annamme sinulle 3 tärkeää vinkkiä, jotka auttavat sinua välttämään joitain yleisiä PHP-suojauksen sudenkuoppia ja kehitystä.
Vinkki 1: Asianmukainen virheilmoitus on pakollinen
Sovelluksen virheraportointi on erittäin hyödyllistä kehitysprosessin aikana. Virheraportit eivät vain auta sinua löytämään kirjoitusvirheitä muuttujista, vaan myös saa kiinni virheellisestä funktion käytöstä.
Kuitenkin, kun verkkosivusto on julkaistu, sama raportointi, joka auttoi sinua kehityksen aikana, voi kääntyä sovelluksesi turvallisuutta vastaan kertomalla käyttäjille verkkosivustostasi paljon enemmän kuin haluat heidän tietävän (esimerkiksi ohjelmistoon liittyvät tiedot). ajettava ja kansiorakenne jne.). Ennen kuin verkkosivusto julkaistaan, sinun tulee varmistaa, että poistat kaikki tällaiset virheet, jotta arkaluontoiset tiedot pysyvät suojassa. Tämä voidaan tehdä kirjoittamalla seuraavat rivit sovelluksiimme.
error_reporting(0);
Mahdollisista edelleen esiintyvistä virheistä pidämme silti tarpeen pysyä ajan tasalla niistä. Joten meidän on varmistettava, että kaikki virheet kirjataan suojattuun tiedostoon, mikä voidaan tehdä PHP-funktiolla nimeltä set_error_handler.
Vinkki 2: On suositeltavaa poistaa käytöstä PHP:n ominaisuudet, joita ei enää käytetä
PHP:n alkuajoista lähtien PHP:n suunnittelijat lisäsivät säännöllisesti ominaisuuksia, joiden tarkoituksena oli helpottaa kehitystä. Tai ainakin he ajattelivat tehdä siitä sellaisen! Joillakin näistä oletettavasti hyödyllisistä ominaisuuksista voi yhtä hyvin olla ei-toivottuja seurauksia. Kutsumme näitä "huonoksi ominaisuuksiksi", koska ne mahdollistavat tietojen validoinnin ja loivat väylän virheille löytää tiensä komentosarjoihin. Tästä syystä suosittelemme, että poistat jotkin näistä ominaisuuksista käytöstä yhtenä ensimmäisistä tehtävistä kehitysprosessin alkaessa.
Huomautus: Nämä ominaisuudet voidaan poistaa käytöstä verkkosivustollasi isäntäsi perusteella. Jos kehität omalla tietokoneellasi tai muussa vastaavassa paikallisessa ympäristössä, niitä ei todennäköisesti sammuteta. Jotkut näistä ominaisuuksista on poistettu PHP6:sta, mutta ne ovat edelleen olemassa PHP4-sovelluksissa ja lopulta vanhentuvat PHP5-sovelluksista eteenpäin.
Rekisteröi globaalit (register_globals)
'register_globals' oli pohjimmiltaan tarkoitettu auttamaan nopeaa sovelluskehitystä, johon liittyy kyselymerkkijono. The 'register_globals' lauseke antaa meille mahdollisuuden käyttää arvoa $var sijasta $_GET['muuttuja'] automaattisesti. Tämä saattaa kuulostaa meistä hyödylliseltä, mutta valitettavasti kaikki koodin muuttujat sisältävät nyt tämän ominaisuuden, joten nyt on helppo päästä PHP-sovelluksiin, jotka eivät suojaa tällaisilta ei-toivotuilta seurauksilta. Alla oleva koodinpätkä on vain yksi yleinen esimerkki, jonka näemme PHP-skripteissä:
if( !empty( $_POST['käyttäjänimi'] ) && $_POST['käyttäjänimi'] == 'testi' && !empty( $_POST['salasana'] ) && $_POST['salasana']" == "testi123"
{
$access = tosi;
}
Jos sovellus on käynnissä register_globals ON -asennossa, käyttäjä voi vain asettaa access=1:n kyselymerkkijonoon, jolloin hänellä on pääsy kaikkiin käynnissä olevaan komentosarjaan. Vaikka register_globals-toimintoa ei voi poistaa käytöstä komentosarjan puolelta (käyttäen ini_set, kuten tavallisessa tapauksessa), mutta tähän voidaan käyttää .htaccess-tiedostoa. Tämän lisäksi jotkin isännät antavat meille myös php.ini-tiedoston palvelimella tätä varten.
Poistetaan käytöstä .htaccessilla
php_flag register_globals 0
Poistetaan käytöstä php.inillä
register_globals = Pois
On huomattava, että jos aiomme käyttää mukautettua php.ini-tiedostoa, joka ei sovellu koko palvelimelle, meidän on varmistettava, että sisällytetään nämä ilmoitukset jokaiseen alikansioon, jossa on PHP.
Vinkki 3: Pidä silmällä Cross Site Scripting (XSS) -hyökkäyksiä käyttäjän syötteessä
Web-sovellus ottaa yleensä käyttäjiltä syötteitä näyttääkseen lopulta saman muodossa tai toisessa, joka voi olla mikä tahansa laajasta valikoimasta, mukaan lukien kommentit, blogiviestit tai viestiketjut, jotka ovat kaikki periaatteessa HTML-koodin muodossa. On kuitenkin huomionarvoista, että sovelluksesi voi olla riskialtista sallia HTML:n syötteiden hyväksymisen yhteydessä, koska tämä jättää runsaasti tilaa JavaScriptille suoritettavaksi jollakin monista odottamattomista tavoista. Ja tämä jopa mahdollistaa evästeiden helposti kaapattavan, jos vaikka jotain todella pientä jää valvomatta. Kaappaajat voivat sitten helposti käyttää näitä evästetietoja väärentääkseen oikean tilin ja saada laittoman pääsyn verkkosivustosi tietoihin. Voit suojata verkkosivustosi tällaisilta hyökkäyksiltä kieltämällä HTML:n kokonaan, mikä lopulta myös estää JavaScriptin suorittamisen. Tämä ei kuitenkaan välttämättä ole aina toteuttamiskelpoinen vaihtoehto, koska se poistaa myös muotoilun kokonaan käytöstä, mikä ei välttämättä ole mahdollista, varsinkin blogin tai foorumin tapauksessa.
Voit ratkaista tämän ongelman poistamalla HTML-koodin enimmäkseen käytöstä, lukuun ottamatta joitain yksinkertaisia muotoiluja. Tämä voidaan saavuttaa sallimalla vain muutama HTML-tunniste (ilman attribuutteja), esimerkiksi "strong"- tai "em"-tagi. Tai yksinkertaisesti muutamia suosittuja tunnisteita, kuten "BBCode" tai "BB Tags", jotka kirjoitetaan yleisesti foorumeilla muodossa [b]test[/b]. BBCode voidaan toteuttaa myös käyttämällä olemassa olevia paketteja, kuten HTML_BBCodeParser, tai kirjoittamalla oma BBCode-toteutus säännöllisillä lausekkeilla ja joukolla 'preg_replace'-lauseita.
Viite: http://www.sks.com.np/basic-security-vulnerabilities-in-php-code/
Johtajana PHP-kehitysyritys , Carmatec tarjoaa päästä päähän PHP kehitys huipputeknologiaan perustuvia ratkaisuja sekä etu- että takapäähän. Nykyaikaisen tyylin ja muotoilun lisäksi pyrimme pitämään käyttöliittymät yksinkertaisina ja käyttäjäystävällisinä. Helppokäyttöisyys on tavoitteemme myös monimutkaisissa sivuston toiminnallisuuksissa.