Kuinka kovettaa PHP-tietosuojaa paremmin

PHP: tä käytetään laajasti monissa sivustoissa & sovelluksia, mutta turvallisuuden vuoksi olisi kovetettava. Tässä on joitain edistyneitä vinkkejä PHP-asetustiedoston suojaamiseksi.


Kuinka kovettaa PHP

PHP on ylivoimaisesti suosituin web-tausta-ohjelmointikieli, jota nykyään käytetään. Tähän mennessä yli 80% sivustoista, joilla on tausta toteuttaa PHP. Se tukee WordPressiä, Joomlaa ja Drupalia. Valitettavasti PHP: stä on tullut suosittu kohde hakkerointiyrityksissä, minkä vuoksi sen konfiguroinnin turvaaminen on kriittistä. Noudata näitä yksinkertaisia ​​ohjeita kovettaaksesi PHP-kokoonpanosi ja suojataksesi sitä hakkeroinnin haavoittuvuuksilta.

Etsi PHP-määritystiedosto

PHP-asetustiedoston nimi on php.ini, jota sinun on muokattava. Tiedoston sijainti vaihtelee hosting-yrityksen ja palvelintyypin mukaan.

Muokkaa jaetulla isännöinnillä

Jos et ole varma, missä php.ini-tiedostosi sijaitsee, ota yhteyttä palveluntarjoajaan. Jotkut palveluntarjoajat vaativat, että asetat PHP-asetukset Web-juurin .htaccess-tiedostoon. Jos näin on, PHP-asetukset tulisi lisätä yksi riviä kohti muodossa “php_value Name value”. Muista, että palveluntarjoajasi saattaa estää tiettyjen asetusten muuttamisen.

Muokkaa VPS: llä tai erillisellä palvelimella

Web Host Manager (WHM) yksinkertaistaa PHP-asetustiedoston muokkausta tarjoamalla yksinkertainen käyttöliittymä. Etsi vain WHM: n “Palvelun määritys” -osa ja napsauta “PHP-määritysohjelma”. Valitse ilmestyvältä sivulta ”Advanced Mode”.

PHP-määritysohjelma

Jos et käytä ohjauspaneelia, kuten WHM, sinun on avattava ja muokattava php.ini suoraan. Php.ini: n sijainti vaihtelee palvelimen käyttöjärjestelmän mukaan. Monet Linux-järjestelmät sijoittavat tiedoston polulle “/etc/php.ini”. Voit vahvistaa sen sijainnin komentorivillä. Aloita kirjautumalla palvelimeen SSH: n kautta (ota ohjeita palveluntarjoajaasi). Kun olet muodostanut yhteyden, kirjoita komento “php –ini” ja paina Enter. Etsi riviltä “Loaded Configuration File” palautettu rivi ja ota huomioon php.ini-tiedostopolku.

Voit avata ja muokata php.ini-sovellusta komentorivillä käyvällä tekstieditorilla, kuten Linuxilla nano. Kirjoita vain nano /path/to/php.ini ja paina Enter.
Nano Linuxille

php.ini Rakenne

Php.ini-tiedostossa jokainen asetus sijoitetaan omalle rivilleen muodossa “asetusnimi = asetusarvo”. Mikä tahansa puolipisteellä alkava rivi on kommentti, joten älä päivitä mitään näistä riveistä.

Muokkaa kokoonpanoasetuksia

Alla on luettelo asetuksista, jotka tulisi tarkistaa ja päivittää tietoturvan parantamiseksi. Asetukset on ryhmitelty alla oleviin osiin niiden tarkoituksen perusteella.

Osa 1: Etäyhteydet

allow_url_fopen = 0
sallia_url_include = 0

Älä anna fopen-kääreiden avata etä-URL-osoitteita. Etäsisältöön ei aina voida luottaa; Näiden asetusten poistaminen käytöstä varmistaa, että fopen-kääreet voivat ladata vain paikallista sisältöä.

Osa 2: Suorituksenaikaiset asetukset

max_input_time = 30
max_execution_time = 30

Rajoita tulojen käsittelyyn sallittua enimmäisaikaa ja enimmäisaikaa, jonka PHP-skripti voi suorittaa. Tässä molemmat asetukset on asetettu 30 sekunnin rajaan. Tämä varmistaa, että jos skripti vaarantuu, se ei lue tuloja tai ajeta pitkään aikaan. Hyvin koodatun komentosarjan suorittamisen ei tulisi vaatia yli 30 sekuntia.

muisti_raja = 8 M

Varmista, että PHP-skripti ei koskaan käytä yli 8 Mt muistia. Jos komentosarja on vaarantunut, tämä asetus rajoittaa käytännössä sen muistin määrää, jota komentosarja voi käyttää.

register_globals = pois päältä

Tämän asetuksen poistaminen käytöstä estää pyyntötietojen automaattisen tallentamisen muuttujana. Globaalien muuttujien rekisteröinti herättää useita huolenaiheita; Yksi esimerkki on, että ympäristömuuttujia voidaan helposti muokata. Näiden ongelmien välttämiseksi varmista, että tämä asetus on pois päältä.

paljasta_php = 0

Oletuksena PHP: n läsnäolo ja sen versionumero paljastetaan osana HTTP-vastauksia. Koska tämä tarjoaa tarpeetonta tietoa palvelimesta, on suositeltavaa kytkeä se pois päältä.

cgi.force_redirect = 1

Varmista, että PHP voidaan suorittaa vain verkkopalvelimen uudelleenohjaussäännön kautta. Tämä estää PHP: tä kutsumasta suoraan, mikä parantaa tietoturvaa.

Osa 3: Syöttötietojen rajoitukset

post_max_size = 256 kt
max_input_vars = 100

Hakkerit voivat yrittää tulvata verkkosovellusresursseja lähettämällä siihen massatietoja, mikä voi vähentää siirtonopeutta ja käytettävissä olevia palvelinresursseja. Tämän tyyppisen hyökkäyksen vaikutus voidaan minimoida pienentämällä POST-datan enimmäiskokoa ja myös rajoittamalla pyyntötietojen määrää. Huomaa, että “post_max_size” vaikuttaa myös tiedostojen enimmäiskokoon; Jos sovelluksessasi on tiedostojen lähetysominaisuuksia, varmista, että tämän asetuksen arvo on vähintään yhtä suuri kuin “upload_max_filesize”.

Kohta 4: Virheiden käsittely

näyttövirheet = 0
display_startup_errors = 0

Virheviestejä ei tulisi koskaan näyttää loppukäyttäjälle, koska viestit sisältävät usein yksityiskohtaisia ​​tietoja sovelluksen koodista ja palvelimesta. Tietoja voidaan mahdollisesti käyttää hakkereiden auttamiseen. Sen sijaan, kirjaa virheilmoitukset palvelimen suojattuun tiedostoon.

lokivirheet = 1
virhe_loki = / koti / johndoe / virhe_loki

PHP-virheet tulisi kirjata, jotta sovelluskoodista saataisiin vikoja ja jotta voitaisiin tutkia mahdollisia haavoittuvuuksia. Jos käytät cPanelin mukana toimitettua tiedostohallintaa, kätevä ja turvallinen sijainti virhelokiin on suoraan verkkojuuren ulkopuolella.

Osa 5: Rajoita tiedostojen käyttöä

open_basedir = "/ Home / johndoe / public_html"

Open_basedir varmistaa, että PHP voi sisältää tiedostoja vain luetteloiduista hakemistoista. Tämä parantaa tietoturvaa estämällä PHP-skriptejä pääsemästä tahattomasti suojattuihin tiedostoihin sallittujen polkujen ulkopuolelle. Huomaa, että sinun on lisättävä jokainen hakemisto, jota PHP tarvitsee päästäkseen valkoiseen luetteloon, mukaan lukien väliaikaiset tiedostojen lähetys- ja istuntohakemistot (katso alla). Voit lisätä useita hakemistoja luetteloon asettamalla kaksoispisteen kunkin hakemiston väliin. Esimerkiksi:

open_basedir = "/ Home / johndoe / public_html: / var / lib / php / tmp_upload: / var / lib / php / istunto"

Osa 6: Tiedostojen lähettäminen

tiedosto_lataukset = 0

Jos sovellus ei sisällä tiedostojen lähettämistä käyttäjien tietokoneilta, on suositeltavaa poistaa tämä PHP-ominaisuus kokonaan käytöstä. Tämä auttaa estämään hakkereita lähettämästä skriptejä, jotka voidaan sitten lisätä sovellukseen.

tiedosto_lataukset = 1
upload_max_filesize = 1M

Jos sovelluksesi vaatii tiedostojen lähetysominaisuuksia, pidä “upload_max_filesize” mahdollisimman pienenä.

upload_tmp_dir = / var / lib / php / tmp_upload

Oletuksena väliaikaiset tiedostojen lataukset sijoitetaan hakemistoon, johon kaikki järjestelmän käyttäjät voivat kirjoittaa. Paikka tulisi vaihtaa turvallisempaan hakemistoon. Varmista, että uusi hakemiston sijainti ei sijaitse verkkojuuressa. Jos käytät cPanelin mukana toimitettua tiedostohallintaa, helppo ja turvallinen sijainti lataushakemiston luomiseen on suoraan verkkojuuren ulkopuolella (ts. Sama hakemisto, jossa public_html sijaitsee). Toinen turvallinen sijainti on luoda hakemisto PHP-hakemistoon hakemistossa / var / lib. Polku riippuu käyttöjärjestelmästä, ts. “/ Var / lib / php” tai “/ var / lib / php5”. Jos sinulla on voimassa open_basedir-rajoituksia, varmista, että väliaikainen lähetyshakemisto sisältyy open_basedir -lisäkirjaan.

Kohta 7: Istunnon suojaus

Istuntoja käytetään tietojen säilyttämiseen yksittäisten käyttäjien useissa pyynnöissä. Varsinaiset tiedot tallennetaan palvelimelle, ja evästettä (tai vähemmän turvallisesti HTTP-pyyntötietoja), joka sisältää istunnon tunnuksen, käytetään käyttäjien validointiin. Istuntoja käytetään tarkoituksiin, mukaan lukien todentaminen web-sovellukseen, mikä on yksi syy, miksi sen turvallisuus on niin tärkeä. Seuraavat asetukset voidaan päivittää istunnon sieppaamisen vähentämiseksi.

session.use_strict_mode = 1

Luo uusi istunnon tunnus, jos selain lähettää aiemmin aloittamattoman tunnuksen. Tämä auttaa estämään istunnon korjaamiseksi kutsutun hyökkäyksen.

session.cookie_httponly = 1

Salli istuntoevästeen saatavuus vain HTTP-pyynnöstä, ei muista lähteistä, kuten JavaScript. Tämä auttaa estämään hyökkäyksen, jota kutsutaan XSS-hyökkäykseksi.

session.use_cookies = 1
session.use_only_cookies = 1
session.use_trans_sid = 0

Tallenna istunnon tunnus evästeeseen sen sijaan, että lähettäisit sitä URL-parametrina. Tämä auttaa pitämään käyttäjän istunnon turvassa estämällä istunnon kiinnityshyökkäykset.

session.name = custom_session_id

Evästeet tallentavat tietonsa avain-arvomuodossa. On suositeltavaa päivittää evästeen oletusnäppäimen nimi, joka tallentaa istunnon tunnuksen. Päivitä ”custom_session_id” mukautetulla arvolla.

session.cookie_secure = 1

Jos verkkosovelluksesi käyttää suojausta varten HTTPS-protokollaa, ota tämä asetus käyttöön pakottaaksesi istunto-ID: tä sisältävät evästeet pääsemään vain suojatun yhteyden kautta.

session.referer_check = esimerkki.com

Tarkista, mistä pyyntö tuli, jotta voidaan päättää, sallitaanko pääsy istunnon tietoihin. Päivitä tämä asetusarvo sovelluksesi verkkotunnukseen, jotta istuntotietoja ei pääse käyttämään, jos skripti ladataan ulkoisesta lähteestä.

session.save_path = "/ Var / lib / php / istunto"

Kaikki järjestelmän käyttäjät voivat kirjoittaa oletusistunnotiedostojen tallennuspolun. Paikka tulisi vaihtaa turvallisempaan hakemistoon. Varmista, että uusi hakemiston sijainti ei sijaitse verkkojuuressa. Jos käytät cPanelin mukana toimitettua tiedostohallintaa, silloin helppo sijainti istuntohakemiston luomiseen on suoraan verkkojuuren ulkopuolella (ts. Sama hakemisto, jossa public_html sijaitsee). Toinen turvallinen sijainti on luoda hakemisto PHP-hakemistoon hakemistossa / var / lib. Polku riippuu käyttöjärjestelmästä, ts. “/ Var / lib / php” tai “/ var / lib / php5”. Jos sinulla on voimassa open_basedir-rajoituksia, varmista, että istunnon tallennuspolku sisältyy open_basedir-sallittuihin luetteloihin.

session.hash_function = sha512

SHA-512 on turvallisempi hajautusalgoritmi istuntotunnusten luomiseen verrattuna MD5-oletushajautustoimintoon. Tämä algoritmi on saatavana PHP-versiossa 5.3+. Jos käytät pienempää PHP-versiota, käytä sen sijaan SHA1-hash-algoritmia. Aseta se määrittämällä “session.hash_function = 1”.

session.bug_compat_42 = 0
session.bug_compat_warn = 0

Asetusten poistaminen käytöstä varmistaa, että istuntomuuttujia ei voida alustaa globaalisti, mikä parantaa tietoturvaa.

Poista haavoittuvat toiminnot käytöstä

Disable_functions = ini_set, php_uname, getmyuid, getmypid, passthru, vuotaa, kuuntele, diskfreespace, tmpfile, linkki, ignore_user_abord, shell_exec, dl, set_time_limit, exec, system, pabrėžia_tiedosto, lähde, show_sourge_postivide, postivers, fpaththru, posix_geteuid, posix_getgid, posix_getgrgid, posix_getgrnam, posix_getgroups, posix_getlogin, posix_getpgid, posix_getpgrp, posix_getpid, posix, _getppid, posix_getpwnam, posix_getpwuid, posix_getrlimit, posix_getsid, posix_getuid, posix_isatty, posix_kill, posix_mkfifo, posix_setegid, posix_seteuid, posix_setgid, posix_setpgid, posix_setsid, posix_setuid, posix_times, posix_ttyname, posix_uname, proc_open, proc_close, proc_get_status, proc_nice, proc_terminate, phpinfo, popen, curl_exec, curl_multi_exec, parse_ini_file, allow_url_fopen, allow_url_include, pcntl_exec, chgrp, chmod, chown, lchgrp, lchown, putenv

Useat PHP-toiminnot voivat tarjota avoimet ovet verkkosovellus hakkereille, ellei niitä käytetä huolellisesti. Esimerkiksi virheellisesti vahvistettujen tulojen lähettäminen monille näistä toiminnoista johtaa tietoturvaongelmiin. Näiden toimintojen poistaminen kokonaan käytöstä on yksinkertainen ja tehokas ratkaisu ongelmaan. Jos sovelluksesi kuitenkin vaatii jotain luetelluista toiminnoista, poista se luettelosta.

Saippuavälimuisti

soap.wsdl_cache_dir = / var / lib / php / saippua_välimuisti

Kuten tiedostojen lähettämisessä ja istunnotiedoissa, SOAP-välimuistitietoja ei tule tallentaa väliaikaiseen oletushakemistoon. Aseta tämä turvallisempaan hakemistoon.

Käynnistä PHP uudelleen

Kun olet tehnyt muutoksia php.ini-tiedostoon, sinun on käynnistettävä Web-palvelin uudelleen. WHM tarjoaa painikkeen palvelimen käynnistämiseen uudelleen tiedoston muokkaamisen jälkeen. Jos et käytä ohjauspaneelia, kuten WHM, sinun on käynnistettävä palvelin uudelleen komentorivillä. Kirjoita Apache: lle komento “sudo apachectl graceful” ja paina Enter.

johtopäätös

Päivittämällä nämä asetukset, PHP-ympäristösi on edelleen suojassa hakkerointiyrityksiltä. PHP-ympäristön suojaaminen hakkereilta on tärkeä askel yrityksesi maineen suojaamiseksi. Muista kuitenkin, että huonosti koodattu sovellus on aina avoin ovi hakkerointiin, jopa kovetetulla PHP-kokoonpanolla. Aloita pitämällä kokoonpano kovettuneena, ja kirjoita sieltä aina turvallinen sovelluskoodi.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me