Hogyan javítsuk meg a PHP-t a jobb biztonság érdekében

A PHP sok webhelyen széles körben használatos & alkalmazásokat, de a biztonság érdekében meg kell erősíteni őket. Itt található néhány speciális tipp a PHP-konfigurációs fájl biztonságához.


Hogyan lehet megkeményíteni a PHP-t

A PHP messze a legnépszerűbb web háttér-programozási nyelv, amelyet manapság használnak. A mai napig, vége A webhelyek 80% -a háttérképpel rendelkezik végre PHP. A WordPress, a Joomla és a Drupal mind támogatják. Sajnos a PHP népszerű célpontja lett a hackelési kísérleteknek, ezért kritikus fontosságú a konfigurációjának biztosítása. Kövesse ezeket az egyszerű lépéseket a PHP-konfiguráció megszilárdításához és annak megóvásához.

Keresse meg a PHP konfigurációs fájlt

A PHP konfigurációs fájljának neve php.ini, amelyet szerkesztenie kell. A fájl helye a tárhelyszolgáltató és a kiszolgálótípus függvényében változhat.

Szerkesztés a megosztott tárhely segítségével

Ha nem biztos benne, hogy hol található a php.ini fájl, vegye fel a kapcsolatot a szolgáltatóval. Egyes szolgáltatók megkövetelik, hogy a PHP-beállításokat tegye a web gyökérrészében a .htaccess fájlba. Ebben az esetben a PHP-beállításokat soronként hozzá kell adni egy „php_value Name value” formátumban. Ne feledje, hogy a host szolgáltatója akadályozhatja meg egyes beállítások módosítását.

Szerkesztés VPS-sel vagy dedikált szerverrel

A Web Host Manager (WHM) egyszerű felhasználói felület segítségével egyszerűsíti a PHP konfigurációs fájl szerkesztésének folyamatát. Egyszerűen keresse meg a WHM „Szolgáltatáskonfiguráció” szakaszát, és kattintson a „PHP Configuration Editor” elemre. A megjelenő oldalon válassza az „Advanced Mode” lehetőséget..

PHP konfigurációs szerkesztő

Ha nem olyan vezérlőpanelt használ, mint például a WHM, akkor közvetlenül meg kell nyitnia és szerkesztenie a php.ini fájlt. A php.ini helye a szerver operációs rendszerétől függően változik. Sok Linux rendszer a fájlt az „/etc/php.ini” útvonalra helyezi. A helyét a parancssorban erősítheti meg. Először jelentkezzen be a kiszolgálóra az SSH-n keresztül (útmutatásokért forduljon a host szolgáltatóhoz). Csatlakozás után írja be a „php –ini” parancsot, és nyomja meg az Enter billentyűt. Keresse meg a „Loaded Configuration File” címet visszaküldött sort, és vegye figyelembe a php.ini fájl elérési útját.

A php.ini fájlt a parancssorban futó szövegszerkesztővel megnyithatja és szerkesztheti, például Linux esetén a „nano”. Egyszerűen írja be a „nano /path/to/php.ini” kifejezést, és nyomja meg az Enter billentyűt.
Nano Linuxhoz

php.ini felépítése

A php.ini-n belül minden beállítást a saját sorára helyezzen el, „beállítónév = beállítási érték” formátumban. Bármely pontosvesszővel kezdődő sor megjegyzés, tehát ne frissítse ezen sorok egyikét sem.

A konfigurációs beállítások szerkesztése

Az alábbiakban felsoroljuk azokat a beállításokat, amelyeket felül kell vizsgálni és frissíteni kell a biztonság javítása érdekében. A beállításokat céljuk alapján az alábbiak szerint több részre csoportosítják.

1. szakasz: Távoli kapcsolatok

allow_url_fopen = 0
allow_url_include = 0

Ne engedje, hogy a fóliacsomagolók távoli URL-eket nyissanak. A távoli tartalom nem mindig bízható meg; Ezen opciók letiltása biztosítja, hogy a fopen csomagolók csak a helyi tartalmat töltsék be.

2. szakasz: Futásidejű beállítások

max_input_time = 30
max_execution_time = 30

Korlátozza a bemenetek feldolgozásához megengedett maximális időt, valamint a PHP parancsfájl futtatásának maximális idejét. Itt mindkét beállítást 30 másodperces határra állítják. Ez biztosítja, hogy abban az esetben, ha a szkript veszélybe kerülne, az nem olvassa be a bemeneteket, vagy hosszabb ideig nem fut. A jól kódolt szkript futtatásához nem szükséges több, mint 30 másodperc.

memory_limit = 8M

Ügyeljen arra, hogy a PHP szkript soha ne használjon több, mint 8 MB memóriát. Ha egy szkript sérült, ez a beállítás hatékonyan korlátozza a szkript által felhasználható memória mennyiségét.

register_globals = ki

Ennek a beállításnak a tényleges letiltása tiltja a kérelem adatainak automatikus tárolását változóként. A globális változók regisztrálása számos aggodalomra ad okot; az egyik példa arra, hogy a környezeti változók könnyen módosíthatók. Ezen problémák elkerülése érdekében ellenőrizze, hogy ki van-e kapcsolva.

expose_php = 0

Alapértelmezés szerint a PHP jelenléte, valamint verziószáma a HTTP-válaszok részeként van kitéve. Mivel ez szükségtelen betekintést nyújt a szerverbe, tanácsos ezt kikapcsolni.

cgi.force_redirect = 1

Győződjön meg arról, hogy a PHP csak egy webszerver átirányítási szabályon keresztül futtatható. Ez megakadályozza a PHP közvetlen meghívását, ami javítja a biztonságot.

3. szakasz: Bemeneti adatok korlátozásai

post_max_size = 256K
max_input_vars = 100

A hackerek megpróbálhatják elárasztani a webes alkalmazások erőforrásait tömeges adatok küldésével, amelyek csökkenthetik az átviteli sebességet és a rendelkezésre álló szerver erőforrásokat. Az ilyen típusú támadások minimalizálhatók a POST-adatok maximális méretének csökkentésével, valamint a kérési adatok mennyiségének korlátozásával. Vegye figyelembe, hogy a „post_max_size” a fájlfeltöltések maximális méretét is befolyásolja; ha az alkalmazás rendelkezik fájlfeltöltési képességekkel, győződjön meg arról, hogy ennek a beállításnak az értéke legalább olyan magas, mint a „upload_max_filesize” érték.

4. szakasz: Hibakezelés

display_errors = 0
display_startup_errors = 0

A hibaüzeneteket soha nem szabad megjeleníteni a végfelhasználó számára, mivel az üzenetek gyakran tartalmaznak részletes információkat az alkalmazás kódjáról és a szerverről. Ez az információ felhasználható a hackerek segítésére. Ehelyett jelentkezzen a hibaüzenetek egy biztonságos fájlra a kiszolgálón.

naplóhiba = 1
hiba_napló = / home / johndoe / hiba_napló

A PHP hibákat naplózni kell az alkalmazás kódjának hibakeresése, valamint a potenciális biztonsági rések feltárása céljából. Ha olyan fájlkezelőt használ, mint például a cPanelhez mellékelt fájlkezelő, akkor a hibanapló kényelmes és biztonságos helye közvetlenül a webes gyökérön kívül található.

5. szakasz: A fájlhozzáférés korlátozása

open_basedir = "/ Home / johndoe / public_html"

Az Open_basedir biztosítja, hogy a PHP csak a felsorolt ​​könyvtárakból tartalmazzon fájlokat. Ez javítja a biztonságot azáltal, hogy megakadályozza a PHP-szkriptek akaratlan hozzáférését a biztonságos fájlokhoz a engedélyezett listán szereplő utakon kívül. Vegye figyelembe, hogy minden olyan könyvtárat hozzá kell adnia, amelyre a PHP-nek hozzáférnie kell a fehérlistához, beleértve az ideiglenes fájlfeltöltést és a munkamenet-könyvtárakat (lásd alább). Több könyvtárat felvehet a listába, ha kettőspontot helyez el az egyes könyvtárak között. Például:

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

6. szakasz: Fájlfeltöltések

file_uploads = 0

Ha az alkalmazás nem tartalmaz fájlok feltöltését a felhasználói számítógépről, akkor tanácsos ezt a PHP funkciót teljesen letiltani. Ez segít megakadályozni, hogy a hackerek szkripteket töltsenek fel, amelyeket azután be lehet adni az alkalmazásba.

file_uploads = 1
upload_max_filesize = 1M

Ha az alkalmazás fájlfeltöltési képességeket igényel, tartsa a „upload_max_filesize” értékét a lehető legkisebb értékben.

upload_tmp_dir = / var / lib / php / tmp_upload

Alapértelmezés szerint az ideiglenes fájlfeltöltések egy olyan könyvtárba kerülnek, amelyet minden rendszerfelhasználó írhat. A helyet biztonságosabb könyvtárra kell váltani. Győződjön meg arról, hogy az új könyvtár helye nem a web gyökérkönyvtárában található. Ha olyan fájlkezelőt használ, mint amilyen a cPanel része, akkor a feltöltési könyvtár létrehozásához egy egyszerű és biztonságos hely közvetlenül a webes gyökérön kívül található (azaz ugyanaz a könyvtár, amelyen a public_html található). Egy másik biztonságos hely a könyvtár létrehozása a PHP könyvtárban a “/ var / lib” könyvtárban. Az elérési út az operációs rendszertől függ, vagyis “/ var / lib / php” vagy “/ var / lib / php5”. Ha az open_basedir korlátozások vannak érvényben, ellenőrizze, hogy az ideiglenes feltöltési könyvtár szerepel-e az open_basedir engedélyezési listán.

7. szakasz: Munkamenet-biztonság

A szekciók célja az információk megőrzése az egyedi felhasználók több kérése során. A tényleges információkat a szerveren tárolják, és egy munkamenet-azonosítót tartalmazó sütiket (vagy kevésbé biztonságosan HTTP-kérési adatokat) használnak a felhasználók érvényesítésére. A szekciókat olyan célokra használják, beleértve a webalkalmazás hitelesítését, ami az egyik oka annak, hogy a biztonsága olyan fontos. A következő beállítások frissíthetők a munkamenet-lehallgatás kockázatának csökkentése érdekében.

session.use_strict_mode = 1

Hozzon létre új munkamenet-azonosítót, ha a böngésző korábban nem kezdeményezett azonosítót küld. Ez segít megelőzni a munkamenet-rögzítésnek nevezett támadást.

session.cookie_httponly = 1

Hagyja, hogy a munkamenet-süti csak HTTP-kérésből érhető el, és ne más forrásokból, például JavaScriptből. Ez segít megelőzni az XSS-támadásnak nevezett támadást.

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

Mentse el a munkamenet-azonosítót egy sütiben, és ne küldje el URL-paraméterként. Ez segít megőrizni a felhasználói munkamenetet azáltal, hogy megakadályozza a munkamenet-rögzítő támadásokat.

session.name = custom_session_id

A sütik az információkat kulcsérték formátumban tárolják. Javasoljuk, hogy frissítse a munkamenet azonosítóját tároló süti alapértelmezett kulcsnevét. Frissítse az „custom_session_id” egyéni értékkel.

session.cookie_secure = 1

Ha a webalkalmazás biztonsága érdekében fut a HTTPS protokollon, engedélyezze ezt a beállítást, hogy a munkamenet-azonosítókat tartalmazó sütiket csak biztonságos kapcsolaton keresztül érje el..

session.referer_check = example.com

Ellenőrizze, hogy honnan érkezett a kérés, annak meghatározása érdekében, hogy engedélyezi-e a munkamenet-adatokhoz való hozzáférést. Frissítse ezt a beállítási értéket az alkalmazás domain nevére, hogy megakadályozza a munkamenet információk elérését, ha egy szkript külső forrásból kerül betöltésre..

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

Az alapértelmezett munkamenet-fájl mentési útvonalat minden rendszerhasználó írhatja. A helyet biztonságosabb könyvtárra kell váltani. Győződjön meg arról, hogy az új könyvtár helye nem a web gyökérkönyvtárában található. Ha olyan fájlkezelőt használ, mint például a cPanelhez mellékelt fájlkezelő, akkor a munkamenet-könyvtár létrehozásának egyszerű helye közvetlenül a webes gyökérnél található (azaz ugyanaz a könyvtár, amelyen a public_html található). Egy másik biztonságos hely a könyvtár létrehozása a PHP könyvtárban a “/ var / lib” könyvtárban. Az elérési út az operációs rendszertől függ, vagyis “/ var / lib / php” vagy “/ var / lib / php5”. Ha vannak érvényben az open_basedir korlátozások, győződjön meg arról, hogy a munkamenet mentési útvonala szerepel-e az open_basedir engedélyezési listáján..

session.hash_function = sha512

Az SHA-512 biztonságosabb kivonási algoritmus a munkamenet-azonosítók létrehozásához, mint az alapértelmezett MD5 kivonat funkció. Ez az algoritmus a PHP 5.3 vagy újabb verziójában érhető el. Ha a PHP kisebb verzióját futtatja, akkor inkább az SHA1 kivonat algoritmust használja. Ehhez állítsa be a „session.hash_function = 1” beállítást..

session.bug_compat_42 = 0
session.bug_compat_warn = 0

Ezeknek a beállításoknak a letiltása biztosítja, hogy a munkamenet-változók nem inicializálhatók globálisan, ami javítja a biztonságot.

Kapcsolja ki a sebezhető funkciókat

Disable_functions = ini_set, php_uname, getmyuid, getmypid, passthru, szivárgás, hallgatás, diskfreespace, tmpfile, link, ignore_user_abord, shell_exec, dl, set_time_limit, exec, rendszer, kiemelés_fájl, forrás, show_sourge__cikk, poszter, 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 -nel, curl_exec, curl_multi_exec, parse_ini_file, allow_url_fopen, allow_url_include, pcntl_exec, chgrp, chmod, chown, lchgrp, lchown, putenv

Számos PHP funkció nyitott ajtókat kínálhat a webes alkalmazás-hackerek számára, ha nem használják körültekintően. Például, ha nem megfelelően validált bemenetet küld ezekre a funkciókra, biztonsági problémákat okozhat. Ezeknek a funkcióknak a teljes letiltása egy egyszerű és hatékony megoldás a problémára. Ha azonban az alkalmazás a felsorolt ​​funkciók bármelyikét igényli, akkor távolítsa el a listából.

Szappan gyorsítótár

soap.wsdl_cache_dir = / var / lib / php / soap_cache

A fájlfeltöltésekhez és a munkamenet adatokhoz hasonlóan a SOAP gyorsítótár-adatait sem szabad az alapértelmezett ideiglenes könyvtárban tárolni. Állítsa ezt egy biztonságosabb könyvtárra.

Indítsa újra a PHP-t

A php.ini fájl módosítása után újra kell indítania a webszervert. A WHM egy gombot biztosít a szerver újraindításához a fájl szerkesztése után. Ha nem olyan vezérlőpanelt használ, mint például a WHM, akkor a parancssoron keresztül újra kell indítania a szervert. Apache esetén írja be a „sudo apachectl graceful” parancsot, és nyomja meg az Enter billentyűt.

Következtetés

Ezeknek a beállításoknak a frissítésével a PHP-környezet tovább védi a hackelési kísérleteket. A PHP-környezet hackerekkel szembeni védelme fontos lépés az üzleti hírnevének védelmében. Ne feledje azonban, hogy a rosszul kódolt alkalmazás mindig nyitott ajtót jelent a hackerekhez, még keményített PHP konfiguráció esetén is. Kezdje úgy, hogy megőrzi a konfigurációt, és onnan mindig írjon biztonságos alkalmazáskódot.

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