PHP DataZone platvormil
Antud blogipostitus on 194 kuud vana ning ei pruugi olla enam ajakohane.
Käesoleva postituse eesmärk on natukene lahti kirjutada erinevaid PHP kasutus- ja seadistusvõimalusi DataZone platvormil.
PHP režiimid ja versioonid
PHP’d on meie platvormil võimalik kasutada kolmes erinevas režiimis, need on FastCGI, CGI ja Apache moodul (Apache 2.0 Handler).
- FastCGI on meie virtuaalserverites ja privaatserverites PHP vaikerežiimiks. FastCGI režiimi eeliseks on korralik jõudlus ning asjaolu, et selles režiimis on igal kliendil sisuliselt oma PHP instants. Seetõttu võimaldab FastCGI režiim kliendil valida mitme PHP versiooni vahel. Hetkel on näiteks valikus versioonid 4.4.X, 5.0.X, 5.1.X ja 5.2.X , vaikimisi on valitud kõige ajakohasem versioon.
- Puhas CGI režiim on kõige ressursinõudlikum eelpoolnimetatud režiimidest ning seetõttu me vaikimisi seda enam virtuaalserveritele välja ei paku, seda on võimalik kasutada privaatserverites ning sedagi äärmisel vajadusel. See tähendab reeglina seda, et kui rakendus FastCGI režiimis mingil põhjusel ei tööta, muudame me režiimi puhta CGI peale.
- Kõikidel virtuaalserveritel, mille PHP režiimiks on valitud Apache moodul on üle terve meie platvormi PHP versiooniks seadistatud üks konkreetne versioon. Selle PHP versiooni valime meie, lähtudes erinevate PHP versioonide ajakohasusest ning turvanõuetest.
On olemas ka neljas võimalus, PHP CLI (Command Line Interface). See pole otseselt virtuaalserveri PHP režiim vaid käsurealt käivitatav binaarutiliit. Asjatundjatel on võimalik selle abil skriptist seest teisi skripte käivitada. PHP CLI käivitamiseks skriptist peab aga virtuaalserveri PHP režiim olema FastCGI (või CGI) peale sätitud, sest Apache mooduli rezhiimis on exec/system/jms. funktsioonid keelatud (vt. järgmist paragrahvi).
Sisuliselt on meil platvormis olemas kõik levinumad erinevad võimalused PHP kasutamiseks.
Nüüd aga pisut juttu sellest, kuidas erinevad PHP režiimid turvalisust mõjutavad.
PHP režiimide turvalisus
Turvalisuse seisukohast on jagatud majutuskeskkonnas parimad variandid FastCGI ning CGI režiimid. Nende režiimide puhul käivitatakse PHP skriptid kliendile eraldatud virtuaalserveri kasutaja õigustes ning nagu eelpool mainitud, käivitatakse igal virtuaalserveri tarbeks oma PHP instants.
See on klientide seisukohalt kõige turvalisem viis PHP’d kasutada, kuna failiõiguste tasandil on erinevatel kasutajatel üksteise failidele ligipääs võimatuks tehtud.
Kui PHP on Apache mooduli režiimis, käivitatakse PHP skriptid veebiserveri kasutajanime alt. See muudab sisuliselt võimatuks failiõiguste tasandil kasutajate faile üksteisest turvaliselt eraldada.
Seetõttu on PHP’sse sisse toodud open_basedir funktsionaalsus, mis võimaldab failioperatsioone teostavad funktsioonid ära piirata konkreetsete kataloogidega, et ühest virtuaalserverist ei pääseks PHP funktsioonide abil lugema ja kirjutama teise virtuaalserveri “kapsamaale”.
Siinkohal on aga üks suur AGA , nimelt kui Apache mooduli režiimis on võimalik PHP’st käivitada süsteemseid käske läbi exec() vms funktsiooni, siis open_basedir piirangud ei päde ning süsteemseid käske käivitades on siiski võimalik teiste virtuaalserverite materjalide kallale pääseda. Meie oleme oma platvormil Apache moodulina kasutatavas PHP’s selliste operatsioonide sooritamise ära keelanud.
PHP häälestamise võimalused
PHP häälestamine ning PHP režiimide vahetamine toimub DataZone haldusliidese vahendusel. PHP seadete muutmine käb veebiserveri seadete punkti alt.
Kui kasutatav või arendatav rakendus nõuab PHP seadete muutmist, siis seda saab teha järgmiselt:
Selleks, et vahetada virtuaalserveris peadomeeni PHP režiimi või versiooni, tuleb jällegi avada veebiserveri seaded, nagu näitab järgmine screenshot:
Selleks, et FastCGI (või CGI) režiimis erinevaid PHP laiendusi (mooduleid) aktiveerida või deaktiveerida, on samas veebiserveri seadete all eraldi PHP laienduste valik. FastCGI režiimis on harvem kasutatavad PHP laiendused nimelt vaikimisi deaktiveeritud, Apache moodulina kasutatavas PHP’s on kõik moodulid vaikimisi aktiveeritud. Seda tasub kindlasti silmas pidada, kui ühelt režiimilt teisele üle minnakse.
Moodulite aktiveerimise/deaktiveerimise akent demonstreerib järgmine screenshot:
Alamdomeenide PHP rezhiimi/moodulite vahetamine käib üldjoontes sarnaselt peadomeenile, kuid eelnevalt tuleb valida Alamdomeenide punkti alt soovitud alamdomeen: