Hoe u u PHP kan verhard vir beter veiligheid

PHP word op baie plekke gebruik & toepassings, maar moet verhard word vir veiligheid. Hier is ‘n paar gevorderde wenke om u PHP-konfigurasielêer te beveilig.


Hoe om PHP te verhard

PHP is verreweg die gewildste web-back-end programmeringstaal wat tans gebruik word. Tot op datum, verby 80% van die werwe met ‘n backend implementeer PHP. WordPress, Joomla en Drupal word almal ondersteun. Ongelukkig het PHP ‘n gewilde teiken geword vir pogings om te kap, en dit is hoekom dit belangrik is om die konfigurasie te beveilig. Volg hierdie eenvoudige stappe om u PHP-konfigurasie te verhard en om dit te beskerm teen kwesbaarhede.

Soek die PHP-konfigurasielêer

Die naam van die konfigurasielêer vir PHP is php.ini, wat u moet redigeer. Die ligging van die lêer wissel na gelang van u gasheeronderneming en bedienertipe.

Redigeer met gedeelde hosting

As u nie seker is waar u php.ini-lêer is nie, kontak u gasheerverskaffer. Sommige verskaffers vereis dat u PHP-instellings binne die “.htaccess” -lêer in die webwortel plaas. As dit die geval is, moet PHP-instellings een per reël bygevoeg word in die formaat “php_value Name value”. Onthou dat u gasheerverskaffer kan verhoed dat sekere instellings verander word.

Bewerk met ‘n VPS of ‘n toegewyde bediener

Web Host Manager (WHM) vereenvoudig die proses om die PHP-konfigurasielêer te redigeer deur ‘n eenvoudige gebruikerskoppelvlak te bied. Soek eenvoudig die gedeelte “Dienskonfigurasie” in WHM en klik op “PHP-konfigurasieredigeerder”. Kies ‘Advanced Mode’ op die bladsy wat verskyn.

PHP-konfigurasie-redakteur

As u nie ‘n kontrolepaneel soos WHM gebruik nie, moet u php.ini direk oopmaak en redigeer. Die ligging van php.ini sal wissel volgens die bestuurstelsel van u bediener. Baie Linux-stelsels plaas die lêer op die pad /etc/php.ini. U kan die ligging daarvan bevestig via die opdragreël. Begin deur by SSH aan te meld (kontak u gasheerverskaffer vir instruksies). Sodra u verbinding is, voer die opdrag “php –ini” in en druk Enter. Soek na die lyn met die titel “Loaded Configuration File” en gee kennis van die php.ini-lêerpad.

U kan php.ini open en redigeer met behulp van ‘n teksredigeerder wat binne die opdragreël loop, soos “nano” vir Linux. Tik eenvoudig “nano /path/to/php.ini” en druk Enter.
Nano vir Linux

php.ini-struktuur

Binne php.ini word elke instelling op sy eie reël geplaas in die formaat “settingname = settingvalue”. Enige reël wat met ‘n semikolon begin, is ‘n opmerking; moenie een van die reëls opdateer nie.

Wysig konfigurasie-instellings

Hieronder is ‘n lys met instellings wat hersien en bygewerk moet word om veiligheid te verbeter. Die instellings word in verskillende afdelings gegroepeer volgens die doel daarvan.

Afdeling 1: Afstandsverbindings

allow_url_fopen = 0
allow_url_include = 0

Moenie toelaat dat oopbraaiers op afstand URL’s oopmaak nie. Daar kan nie altyd op eksterne inhoud vertrou word nie; as u hierdie opsies deaktiveer, kan u verseker dat die oop pakke slegs plaaslike inhoud kan laai.

Afdeling 2: Runtime-instellings

max_input_time = 30
max_execution_time = 30

Beperk die maksimum hoeveelheid tyd wat toegelaat word om insette te verwerk, sowel as die maksimum tyd wat ‘n PHP-skrip kan loop. Hier is albei instellings op ‘n limiet van 30 sekondes ingestel. Dit verseker dat, in geval ‘n skrip in die gedrang kom, dit nie die insette sal lees of vir ‘n lang tyd sou loop nie. ‘N Goed gekodeerde skrif hoef nie langer as 30 sekondes te duur nie.

geheue_limiet = 8 miljoen

Maak seker dat ‘n PHP-skrip nooit meer as 8 MB geheue gebruik nie. As ‘n skrip in die gedrang kom, beperk hierdie instelling die hoeveelheid geheue wat die skrif kan gebruik, effektief.

register_globals = af

As u hierdie instelling deaktiveer, word dit effektief verbied om versoekdata outomaties as veranderlikes te stoor. Registrasie van globale veranderlikes wek verskeie kommer; een voorbeeld is dat omgewingsveranderlikes maklik verander kan word. Om hierdie probleme te vermy, maak seker dat hierdie instelling nie is nie.

bloot_php = 0

Standaard word die teenwoordigheid van PHP sowel as die weergawe-nommer daarvan blootgestel as deel van HTTP-antwoorde. Aangesien dit onnodige insig in die bediener bied, is dit raadsaam om dit af te skakel.

cgi.force_redirect = 1

Verseker dat PHP slegs uitgevoer kan word via ‘n herleidingsreël op die webbediener. Dit verhoed dat PHP direk gebel word, wat die veiligheid verbeter.

Afdeling 3: Beperkings van invoernata

post_max_size = 256K
max_input_vars = 100

Hackers kan probeer om hulpbronne vir webtoepassings te oorstroom deur massa-data daarheen te stuur, wat oordragsnelhede en beskikbare bedienerhulpbronne kan verminder. Die effek van hierdie soort aanval kan tot die minimum beperk word deur die maksimum grootte van POST-data te verminder, en ook deur die hoeveelheid versoekdata te beperk. Let daarop dat “post_max_size” ook die maksimum grootte van die oplaai van lêers beïnvloed; as u program ‘n lêeroplaai-vermoë het, maak seker dat die waarde van hierdie instelling minstens so groot is as “upload_max_filesize”.

Afdeling 4: Fouthantering

display_errors = 0
display_startup_errors = 0

Foutboodskappe mag nooit aan die eindgebruiker vertoon word nie, aangesien die boodskappe dikwels gedetailleerde inligting bevat oor die programkode en die bediener. Hierdie inligting kan moontlik gebruik word om hackers te help. Teken eerder foutboodskappe na ‘n veilige lêer op die bediener.

log_errors = 1
error_log = / home / johndoe / error_log

PHP-foute moet aangeteken word om die programkode te ontfout, asook om moontlike kwesbaarhede te ondersoek. As u ‘n lêerbestuurder gebruik soos die wat by cPanel ingesluit is, is ‘n gerieflike en veilige plek vir die foutlogboek direk buite die webwortel.

Afdeling 5: Beperk toegang tot lêers

open_basedir = "/ Huis / Jan de Vries / public_html"

Open_basedir verseker dat PHP lêers van slegs die genoteerde kaarte kan insluit. Dit verbeter veiligheid deur te voorkom dat PHP-skripte per ongeluk toegang kry tot veilige lêers buite die witlys-paaie. Let daarop dat u elke gids wat PHP benodig om toegang tot die witlys te voeg, insluitend die tydelike lêers vir oplaai en sessies van die lêer (sien hieronder). U kan verskeie kaarte by die lys voeg deur ‘n dubbelpunt tussen elke gids te plaas. Byvoorbeeld:

open_basedir = "/ Huis / Jan de Vries / public_html: / var / lib / PHP / tmp_upload: / var / lib / PHP / sessie"

Afdeling 6: Oplaai van lêers

file_uploads = 0

As u program nie funksies bevat om lêers vanaf gebruikers se rekenaars op te laai nie, moet u hierdie PHP-funksie heeltemal deaktiveer. Dit help om te voorkom dat hackers skripte oplaai wat dan in die aansoek ingespuit kan word.

file_uploads = 1
upload_max_filesize = 1M

As u toepassingslêer moontlik is, hou dan “upload_max_filesize” so klein as moontlik.

upload_tmp_dir = / var / lib / php / tmp_upload

Tydelik word tydelike lêers opgelaai in ‘n gids wat deur alle stelselgebruikers geskryf kan word. Die ligging moet na ‘n veiliger gids oorgeskakel word. Sorg dat die nuwe gids nie binne die webwortel geleë is nie. As u ‘n lêerbestuurder gebruik soos die een wat by cPanel ingesluit is, is ‘n maklike en veilige plek om die oplaaigids te skep direk buite die webwortel (dit wil sê dieselfde gids waarin die public_html geleë is). ‘N Ander veilige plek is om die gids binne die PHP-gids in “/ var / lib” te skep. Die pad hang af van die bedryfstelsel, dit wil sê “/ var / lib / php” of “/ var / lib / php5”. As open_basedir-beperkings van krag is, maak seker dat die tydelike oplaaigids opgeneem is in die open_basedir-witlys.

Afdeling 7: Sessiesekuriteit

Sessies word gebruik om inligting oor verskillende versoeke vir individuele gebruikers te bewaar. Die werklike inligting word op die bediener gestoor, en ‘n koekie (of, minder veilig, HTTP-versoekdata) wat ‘n sessie-ID bevat, word gebruik om gebruikers te bekragtig. Sessies word gebruik vir doeleindes insluitend verifikasie in ‘n webtoepassing, wat een van die redes is waarom die veiligheid daarvan so belangrik is. Die volgende instellings kan opgedateer word om die risiko van sessie-onderskep te verminder.

session.use_strict_mode = 1

Skep ‘n nuwe sessie-ID as die blaaier ‘n voorheen oninitialiseerde ID stuur. Dit help om ‘n aanval te voorkom, genaamd sessiefiksasie.

session.cookie_httponly = 1

Laat die sessiekoekie slegs toeganklik wees vanaf ‘n HTTP-versoek, en nie vanuit ander bronne soos JavaScript nie. Dit help om ‘n aanval wat ‘n XSS-aanval genoem word, te voorkom.

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

Stoor sessie-ID in ‘n koekie eerder as om dit as ‘n URL-parameter te stuur. Dit help om die sessie van die gebruiker veilig te hou deur aanvalle op sessies te voorkom.

session.name = custom_session_id

Koekies stoor hul inligting in sleutelwaarde-formaat. Dit is raadsaam om die standaardnaam van die koekie wat die sessie-ID stoor op te dateer. Dateer “maat_sessie_id” op met ‘n pasgemaakte waarde.

session.cookie_secure = 1

As u webtoepassing oor die HTTPS-protokol loop vir sekuriteit, kan u hierdie instelling in staat stel om slegs via ‘n veilige verbinding toegang tot koekies wat sessie-ID’s bevat.

session.referer_check = voorbeeld.com

Kyk waar die versoek vandaan kom om te bepaal of u toegang tot sessiedata wil toelaat. Opdateer hierdie instellingswaarde na u domein se naam om te voorkom dat toegang tot sessie-inligting verkry word as ‘n skrip vanaf ‘n eksterne bron gelaai word.

session.save_path = "/ Var / lib / PHP / sessie"

Die standaard-stoorpaadjie vir sessielêers kan deur alle stelselgebruikers geskryf word. Die ligging moet na ‘n veiliger gids oorgeskakel word. Sorg dat die nuwe gids nie binne die webwortel geleë is nie. As u ‘n lêerbestuurder gebruik, soos die een wat by cPanel ingesluit is, is ‘n maklike plek om die sessiegids te skep direk buite die webwortel (dit wil sê dieselfde gids waarin die public_html geleë is). ‘N Ander veilige plek is om die gids binne die PHP-gids in “/ var / lib” te skep. Die pad hang af van die bedryfstelsel, dit wil sê “/ var / lib / php” of “/ var / lib / php5”. As open_basedir-beperkings van krag is, maak seker dat die sessie-stoorpaadjie opgeneem is in die open_basedir-witlys.

session.hash_function = sha512

SHA-512 is ‘n veiliger hash-algoritme vir die skep van sessie-ID’s in vergelyking met die standaard MD5-hash-funksie. Hierdie algoritme is beskikbaar in PHP weergawe 5.3+. As u ‘n mindere weergawe van PHP gebruik, gebruik eerder die SHA1-hash-algoritme. Om dit te doen, stel “session.hash_function = 1”.

session.bug_compat_42 = 0
session.bug_compat_warn = 0

As u hierdie instellings deaktiveer, sal u verseker dat sessieveranderlikes nie wêreldwyd geïnitialiseer kan word nie, wat die veiligheid verbeter.

Deaktiveer kwesbare funksies

disable_functions = ini_set, php_uname, getmyuid, getmypid, passthru, lek, luister, diskfreespace, tmpfile, skakel, ignore_user_abord, shell_exec, dl, set_time_limit, exec, system, highlight_file, source, show_source, fpaththruerm, virtual_pixid 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, set_time_limit

Verskeie PHP-funksies kan oop deure bied vir webtoepassingshacks as dit nie versigtig gebruik word nie. Byvoorbeeld, die versending van onbehoorlik geldige insette na baie van hierdie funksies lei tot veiligheidskwessies. Om hierdie funksies heeltemal uit te skakel, is ‘n eenvoudige en effektiewe oplossing vir die probleem. As u aansoek een van die gelysde funksies benodig, verwyder dit egter van die lys.

Seep-kas

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

Soos met die oplaai van lêers en sessiedata, moet SOAP-kasdata nie binne die standaard tydelike gids geberg word nie. Stel dit op ‘n veiliger gids.

Herbegin PHP

Nadat u die php.ini-lêer verander het, moet u die webbediener weer begin. WHM het ‘n knoppie om die bediener weer te begin nadat die lêer gewysig is. As u nie ‘n kontrolepaneel soos WHM gebruik nie, moet u u bediener via die opdragreël herbegin. Vir Apache, voer die opdrag “sudo apachectl grasieus” in en druk Enter.

Afsluiting

Deur hierdie instellings op te dateer, bly u PHP-omgewing verder beskerm teen hack-pogings. Die beveiliging van u PHP-omgewing teen hackers is ‘n belangrike stap om u besigheids reputasie te beskerm. Onthou egter dat ‘n swak gekodeerde toepassing altyd ‘n oop deur na hacks is, selfs met ‘n geharde PHP-opset. Begin deur u konfigurasie verhard te hou, en skryf altyd veilige toepassingskode daarvandaan.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map