Si ta mbroni PHP-në tuaj për siguri më të mirë

PHP është përdorur gjerësisht në shumë site & aplikacionet, por duhet të forcohen për sigurinë. Këtu janë disa këshilla të përparuara për të siguruar skedarin tuaj të konfigurimit të PHP.


Si të ngurtësoni PHP

PHP është gjuha më e njohur e programeve mbrapa-fundore në përdorim sot. Deri më sot 80% e faqeve me një backend implementimi i PHP. WordPress, Joomla dhe Drupal janë mbështetur nga të gjithë. Fatkeqësisht PHP është bërë një objektiv i njohur për përpjekjet e hakerave, kjo është arsyeja pse sigurimi i konfigurimit të tij është kritik. Ndiqni këto hapa të thjeshtë për të forcuar konfigurimin e PHP-së tuaj dhe për ta ndihmuar në mbrojtjen e tij nga dëmtimet e hakerave.

Gjeni skedarin e konfigurimit të PHP

Emri i skedarit të konfigurimit për PHP është php.ini, të cilin do të duhet ta modifikoni. Vendndodhja e skedarit ndryshon në bazë të kompanisë tuaj pritëse dhe llojit të serverit.

Redaktoni me Sharing Hosting

Nëse nuk jeni të sigurt se ku ndodhet skedari juaj php.ini, kontaktoni ofruesin tuaj të pritjes. Disa ofrues kërkojnë që ju të vendosni cilësimet e PHP brenda skedarit “.htaccess” në rrënjën e uebit. Nëse ky është rasti, cilësimet e PHP duhet t’i shtohen një për një rresht në formatin “vlera e emrit php_value”. Mbani në mend se ofruesi juaj i pritjes mund të parandalojë modifikimin e disa cilësimeve.

Redaktoni me një VPS ose Server të Dedikuar

Menaxheri i Web Host (WHM) thjeshton procesin e redaktimit të skedarit të konfigurimit të PHP duke siguruar një ndërfaqe të thjeshtë të përdoruesit. Thjesht gjeni seksionin “Shërbimi i Konfigurimit” në WHM dhe klikoni “Redaktori i konfigurimit të PHP”. Në faqen që shfaqet, zgjidhni “Modaliteti i Avancuar”.

Redaktori i konfigurimit të PHP

Nëse nuk jeni duke përdorur një panel kontrolli siç është WHM, do të duhet të hapni dhe modifikoni drejtpërdrejt php.ini. Vendndodhja e php.ini do të ndryshojë bazuar në sistemin operativ të serverit tuaj. Shumë sisteme Linux vendosin skedarin në rrugën “/etc/php.ini”. Mund ta konfirmoni vendndodhjen e tij përmes linjës së komandës. Filloni duke hyrë në server përmes SSH (kontaktoni ofruesin tuaj të pritjes për udhëzime). Pasi të jeni lidhur, futni komandën “php –ini” dhe shtypni Enter. Kërkoni për rreshtin e kthyer me titull “File Loading Configuration File” dhe shënoni rrugën e skedarit php.ini.

Ju mund të hapni dhe modifikoni php.ini duke përdorur një redaktues teksti që shkon brenda vijës së komandës, siç është “nano” për Linux. Thjesht shkruani “nano /path/to/php.ini” dhe shtypni Enter.
Nano për Linux

php.ini Struktura

Brenda php.ini, çdo cilësim vendoset në rreshtin e vet në formatin “vendosja e emrit = vendosja e vlerësimit”. Linedo rresht që fillon me një përmbledhje është një koment, kështu që mos e azhurnoni asnjë nga ato rreshta.

Ndryshoni Cilësimet e konfigurimit

Më poshtë është një listë e cilësimeve që duhet të rishikohen dhe azhurnohen për të përmirësuar sigurinë. Cilësimet janë grupuar në disa seksione më poshtë bazuar në qëllimin e tyre.

Seksioni 1: Lidhjet në distancë

lejoj_url_fopen = 0
lejoj_url_include = 0

Mos lejoni që mbështjellësit e hapura të hapin URL të largëta. Përmbajtja në distancë nuk mund të besohet gjithmonë; paaftësia e këtyre opsioneve siguron që mbështjellësit e mbështjellësve mund të ngarkojnë vetëm përmbajtje lokale.

Seksioni 2: Cilësimet e Runtime

max_input_time = 30
max_exception_time = 30

Kufizoni sasinë maksimale të kohës së lejuar për të përpunuar inputet, si dhe kohën maksimale që mund të kandidojë një skript PHP. Këtu, të dy cilësimet janë vendosur në një kufi prej 30 sekondash. Kjo siguron që, në rast se një skenar u bë kompromentues, ai nuk do të lexonte inputet ose do të kandidonte për një periudhë të zgjatur kohe. Një skenar i koduar mirë nuk duhet të kërkojë më shumë se 30 sekonda.

memorie_limit = 8M

Sigurohuni që një skenar PHP kurrë të mos përdor më shumë se 8 MB memorje. Në rast se një skenar është komprometuar, kjo vendosje në mënyrë efektive kufizon sasinë e kujtesës që skenari mund të përdorë.

Register_globals = çaktivizuar

Abaktivizimi i kësaj cilësie ndalon në mënyrë efektive të dhënat e kërkesës që automatikisht të ruhen si një ndryshore. Regjistrimi i variablave globale ngre disa shqetësime; një shembull është që variablat e mjedisit lehtë mund të modifikohen. Për të shmangur këto çështje, sigurohuni që ky cilësim të jetë i fikur.

ekspozojë_php = 0

Si parazgjedhje, prania e PHP si dhe numri i versionit të saj janë të ekspozuara si pjesë e përgjigjeve HTTP. Meqenëse kjo siguron një pasqyrë të panevojshme në server, këshillohet që ta fikni këtë.

cgi.force_redirect = 1

Sigurohuni që PHP mund të drejtohet vetëm përmes një rregulli të ridrejtimit të serverit në internet. Kjo parandalon që PHP të thirret drejtpërdrejt, gjë që përmirëson sigurinë.

Seksioni 3: Kufizimet e të dhënave hyrëse

post_max_size = 256K
max_input_vars = 100

Hakerët mund të përpiqen të përmbytin burimet e aplikacionit në internet duke dërguar të dhëna masive në të, të cilat mund të zvogëlojnë shpejtësinë e transferimit dhe burimet e disponueshme të serverit. Efekti i këtij lloji të sulmit mund të minimizohet duke zvogëluar madhësinë maksimale të të dhënave POST, dhe gjithashtu duke kufizuar sasinë e të dhënave të kërkesës. Vini re se “post_max_size” ndikon gjithashtu në madhësinë maksimale të ngarkimeve të skedarëve; nëse aplikacioni juaj ka aftësi të ngarkimit të skedarëve, sigurohuni që vlera e këtij cilësimi të jetë të paktën aq e madhe sa “upload_max_filesize”.

Seksioni 4: Trajtimi i gabimit

display_errors = 0
display_startup_errors = 0

Mesazhet e gabimit nuk duhet t’i shfaqen kurrë përdoruesit përfundimtar, pasi që mesazhet shpesh përmbajnë informacion të detajuar në lidhje me kodin e aplikacionit dhe serverin. Ky informacion mund të përdoret potencialisht për të ndihmuar hakerat. Në vend të kësaj, shkruani mesazhe gabimi në një skedar të sigurt në server.

log_errors = 1
error_log = / home / johndoe / error_log

Gabimet e PHP duhet të regjistrohen në mënyrë që të korrigjoni kodin e aplikacionit, si dhe të hetoni për dobësitë e mundshme. Nëse jeni duke përdorur një menaxher skedar siç është ai i përfshirë me cPanel, një vend i përshtatshëm dhe i sigurt për regjistrin e gabimeve është drejtpërdrejt jashtë rrënjës së uebit..

Seksioni 5: Kufizoni qasjen në skedar

open_basedir = "/ Home / johndoe / public_html"

Open_basedir siguron që PHP mund të përfshijë skedarë vetëm brenda direktorive të listuara. Kjo përmirëson sigurinë duke parandaluar skriptet PHP nga aksesi pa dashje në skedarë të sigurt jashtë shtigjeve të listave të bardha. Vini re se duhet të shtoni çdo drejtori që i duhet PHP për të hyrë në listën e bardhë, duke përfshirë drejtoritë e ngarkimit të skedarëve të përkohshëm dhe seancave (shiko më poshtë). Ju mund të shtoni direktori të shumta në listë duke vendosur një zorrë të trashë midis secilës drejtori. Për shembull:

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

Seksioni 6: Ngarkimet e skedarëve

skedar_uploads = 0

Nëse aplikacioni juaj nuk përmban funksionim për ngarkimin e skedarëve nga kompjuterët e përdoruesve, këshillohet që të çaktivizoni këtë veçori PHP. Kjo ndihmon për të parandaluar që hakerat të ngarkojnë skriptet që më pas mund të injektohen në aplikacion.

skedar_uploads = 1
upload_max_filesize = 1M

Nëse aplikacioni juaj kërkon aftësi të ngarkimit të skedarëve, mbajeni “upload_max_filesize” në sa më pak të jetë e mundur.

upload_tmp_dir = / var / lib / php / tmp_upload

Si parazgjedhje, ngarkimet e përkohshme të skedarëve vendosen në një drejtori që mund të shkruhet nga të gjithë përdoruesit e sistemit. Vendndodhja duhet të kalohet në një drejtori më të sigurt. Sigurohuni që lokacioni i ri i drejtorisë të mos jetë i vendosur brenda rrënjës së uebit. Nëse jeni duke përdorur një menaxher skedar siç është ai i përfshirë me cPanel, atëherë një vend i lehtë dhe i sigurt për të krijuar direktorinë e ngarkimit është drejtpërdrejt jashtë rrënjës së uebit (d.m.th. i njëjti direktori që public_html ndodhet brenda). Një tjetër vend i sigurt është krijimi i drejtorisë brenda drejtorisë PHP në “/ var / lib”. Rruga varet nga sistemi operativ, d.m.th. “/ var / lib / php” ose “/ var / lib / php5”. Nëse keni kufizime open_basedir në fuqi, sigurohuni që direktoria e ngarkimit të përkohshëm të përfshihet në listën e bardhë të listave të hapura..

Seksioni 7: Siguria e seancës

Sesionet përdoren për të ruajtur informacionin midis kërkesave të shumta për përdoruesit individual. Informacioni aktual ruhet në server, dhe një cookie (ose, më pak e sigurt, të dhënat e kërkesës HTTP) që përmban një ID të sesionit përdoret për të vërtetuar përdoruesit. Seancat përdoren për qëllime, duke përfshirë vërtetimin në një aplikacion në internet, që është një arsye pse siguria e tij është kaq e rëndësishme. Cilësimet e mëposhtme mund të azhurnohen për të ndihmuar në zvogëlimin e rrezikut të përgjimit të seancave.

seanca.use_strict_mode = 1

Krijoni një ID të re të seancës nëse shfletuesi dërgon një ID të paautorizuar më parë. Kjo ndihmon në parandalimin e një sulmi të quajtur fiksim të seancës.

seanca.cookie_httponly = 1

Lejo që cookie-ja e sesionit të jetë e arritshme vetëm nga një kërkesë HTTP, dhe jo nga burime të tjera të tilla si JavaScript. Kjo ndihmon në parandalimin e një sulmi të quajtur një sulm XSS.

seanca.use_cookies = 1
seanca.use_only_cookies = 1
seanca.use_trans_sid = 0

Ruani ID e sesionit në një cookie, në vend se ta dërgoni atë si një parametër URL. Kjo ndihmon për të mbajtur seancën e një përdoruesi të sigurt duke parandaluar sulmet e fiksimit të sesionit.

seanca.name = personal_session_id

Cookies ruajnë informacionin e tyre në formatin e vlerës kryesore. Këshillohet që të azhurnoni emrin kryesor të tastit të cookie-t që ruan ID-in e sesionit. Përditësoni “custom_session_id” me një vlerë të personalizuar.

seanca.cookie_secure = 1

Nëse aplikacioni juaj në internet funksionon mbi protokollin HTTPS për siguri, aktivizoni këtë cilësim për të detyruar që cookies që përmbajnë ID të sesionit të arrihen vetëm mbi një lidhje të sigurt.

seancë.referer_check = shembull.com

Kontrolloni nga erdhi kërkesa për të përcaktuar nëse do të lejoni hyrjen në të dhënat e sesionit. Përditësoni këtë vlerë të cilësimit në emrin e domain-it të aplikacionit tuaj për të parandaluar hyrjen e informacionit të sesionit nëse një skenar është ngarkuar nga një burim i jashtëm.

sesion.save_path = "/ Var / lib / php / sesion"

Rruga e parazgjedhur e ruajtjes së skedarit të sesionit mund të shkruhet nga të gjithë përdoruesit e sistemit. Vendndodhja duhet të kalohet në një drejtori më të sigurt. Sigurohuni që lokacioni i ri i drejtorisë të mos jetë i vendosur brenda rrënjës së uebit. Nëse jeni duke përdorur një menaxher skedar siç është ai i përfshirë me cPanel, atëherë një vend i lehtë për të krijuar direktorinë e sesionit është drejtpërdrejt jashtë rrënjës së uebit (d.m.th. i njëjti direktori që public_html ndodhet brenda). Një tjetër vend i sigurt është krijimi i drejtorisë brenda drejtorisë PHP në “/ var / lib”. Rruga varet nga sistemi operativ, d.m.th. “/ var / lib / php” ose “/ var / lib / php5”. Nëse ekzistojnë kufizime open_basedir, sigurohuni që rruga e kursimit të sesionit të përfshihet në listën e bardhë të listës listale të hapura..

seanca.hash_funksioni = sha512

SHA-512 është një algoritëm më i sigurt për hashjen për krijimin e ID-ve të seancave në krahasim me funksionin e parazgjedhur të hash MD5. Ky algoritëm është në dispozicion në versionin PHP 5.3+. Nëse po ekzekutoni një version më të vogël të PHP, në vend të kësaj përdorni algoritmin e hash SHA1. Për ta bërë këtë, vendosni “session.hash_function = 1”.

seanca.bug_compat_42 = 0
seanca.bug_compat_warn = 0

Abaktivizimi i këtyre cilësimeve do të sigurojë që variablat e sesionit nuk mund të inicializohen globalisht, gjë që përmirëson sigurinë.

Disaktivizoni funksionet e rrezikuara

disable_functions = ini_set, php_uname, getmyuid, getmypid, passthru, rrjedh, listen, diskfreespace, tmpfile, link, injore_user_abord, shell_exec, dl, set_time_limit, exec, system, highlight_file, burim, show_source, fdix 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

Disa funksione PHP mund të ofrojnë dyer të hapura për hacks e aplikacioneve në internet nëse nuk përdoren me kujdes. Për shembull, dërgimi i inputeve jo të vlefshme të vërtetuara në shumë prej këtyre funksioneve rezulton në çështje të sigurisë. Abaktivizimi i këtyre funksioneve krejtësisht është një zgjidhje e thjeshtë dhe efektive për problemin. Sidoqoftë, nëse aplikacioni juaj kërkon ndonjë nga funksionet e listuara, hiqeni atë nga lista.

Cache e sapunit

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

Ashtu si me ngarkimet e skedarëve dhe të dhënat e sesionit, të dhënat e cache SOAP nuk duhet të ruhen brenda direktorisë së përkohshme të paracaktuar. Vendoseni këtë në një direktori më të sigurt.

Rinisni PHP-në

Pasi të bëni ndryshime në skedarin php.ini, do të duhet të rindizni serverin në internet. WHM siguron një buton për të rinisur serverin pas redaktimit të skedarit. Nëse nuk jeni duke përdorur një panel kontrolli siç është WHM, do të duhet të rindizni serverin tuaj përmes linjës së komandës. Për Apache, shkruani komandën “sudo apachectl këndshëm” dhe shtypni Enter.

përfundim

Me azhurnimin e këtyre cilësimeve, mjedisi juaj PHP është edhe më tutje duke qëndruar i mbrojtur nga përpjekjet e kollitjes. Sigurimi i mjedisit tuaj PHP nga hakerat është një hap i rëndësishëm për të mbrojtur reputacionin e biznesit tuaj. Sidoqoftë, mbani në mend se një aplikacion i koduar dobët është gjithmonë një derë e hapur për hacks, madje edhe me një konfigurim të ngurtësuar të PHP. Filloni duke e mbajtur të ngurtësuar konfigurimin tuaj, dhe nga atje shkruani gjithmonë kodin e sigurt të aplikacionit.

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