Mga tip sa seguridad ng pag-install
From LimeSurvey Manual
Pangkalahatan
Pakitandaan na sineseryoso namin ang mga isyu sa seguridad at mabilis kaming tumutugon. Kaya kung may alam kayong anumang problema sa seguridad sa LimeSurvey, pakipaalam sa amin sa pamamagitan ng pagbubukas ng bug report sa aming bug tracker (pakimarkahan ang bug bilang severity o category na 'security').
Para sa karagdagang detalye, pakitingnan ang aming Security policy sa pag-uulat ng mga isyu/kahinaan sa seguridad.
Paghihigpit sa web server
Kung gumagamit kayo ng apache, may kasamang iba't ibang htaccess file ang LimeSurvey para sa paghihigpit. Tiyaking pinapayagan ang mga kasamang htaccess gamit ang AllowOverride.
Sa ibang webserver o kung gusto ninyong gamitin ang AllowOverride None: kailangan ninyong
- (opsyonal) i-disable ang access sa lahat ng file sa application, protected, framework at themes/*/views
- i-disable ang access sa mga file na ina-upload ng user sa /upload/surveys/.*/fu_[a-z0-9]
- (opsyonal) i-disable ang access sa mga executable file sa upload directory
Makakakita kayo ng sample para sa nginx sa aming General Faq
Mga pahintulot sa file sa Linux
Kung gumagamit kayo ng Linux server, kailangang itakda nang naaayon ang mga pahintulot sa file upang mapangalagaan ang inyong pag-install ng LimeSurvey.
Mga pangunahing kaalaman tungkol sa mga pahintulot sa file sa Linux/*nix
Multi-user ang operating system na Linux/*nix. Ibig sabihin, bukod sa inyong personal na account, maaaring may iba pang user account sa system, kaya dapat ninyong pag-ingatan kung anong mga pahintulot ang ibinibigay ninyo sa ibang user.
Tandaan na laging mabibigyan ng pahintulot ang 'root' account na ma-access ang inyong mga file (anuman ang itakda ninyong mga pahintulot sa file) dahil ito ang super-admin user.
Tumatakbo rin ang web server (na nagpapatakbo ng LimeSurvey) sa ilalim ng isang partikular na identity (user). Sa Linux, karaniwan itong ang user na 'www', 'www-data' (sa Debian/Ubuntu), 'apache' o 'nobody'. Gayunpaman, gumagamit ang ilang hosting company ng mga system (tulad ng suexec) na nagbibigay-daan para patakbuhin ang mga script ng LimeSurvey gamit ang inyong personal na user. Siyempre, dapat may karapatan ang web server user na basahin ang mga file ng LimeSurvey. Gayunpaman, maliit na bahagi lamang ng mga sub-directory ng LimeSurvey ang kailangang masulatan ng web server user.
Pagtatakda ng mga pahintulot sa file sa isang self-managed na Linux system
Kung kayo mismo ang namamahala sa configuration ng inyong web server at operating system (kayo ang may-ari ng pisikal na server o umuupa ng virtual server na may root access kayo), maaari ninyong isaalang-alang ang mga rekomendasyon sa ibaba.
Maaari muna ninyong itakda ang may-ari at group ng inyong mga file ng LimeSurvey upang mapadali ang pagtatakda ng mga pahintulot sa file. Isang posibleng estratehiya ang itakda ang may-ari ng mga file ng LimeSurvey sa inyong personal na username, at ang group ng mga file ng LimeSurvey sa group ng web server. Karaniwan, ang account lamang ng web server (at posibleng isa pang webmaster account) ang laman ng group na ito. Halimbawa, kung 'myaccount' ang inyong username at 'apache' ang webserver user sa group na 'apache', maaari ninyong gamitin mula sa shell access ang sumusunod na command: $ chown -R myaccount:apache limesurvey/. Pagkatapos, itakda ang mga pahintulot ng mga file at sub-directory.
Upang gumana nang maayos ang script, kailangan ng write access sa ilang directory:
- Kailangan ng Read & Write ng directory na /limesurvey/application/config para ma-save ang mga setting ng configuration ng application
- Ginagamit ang directory na /limesurvey/tmp at ang mga sub-directory nito para sa mga import/upload at dapat itakda sa Read & Write para sa inyong web server
- Dapat ding may Read & Write na mga pahintulot ang upload/directory at lahat ng sub-directory nito upang makapag-upload ng mga larawan at media file
- Maaaring itakda sa Read Only ang lahat ng iba pang directory at file
Pagtatakda ng mga pahintulot sa file sa isang hosted na web server
Dahil mahirap magkaroon ng karaniwang pamamaraan para pangalagaan ang isang web application sa hosted na kapaligiran, medyo mahirap ito dahil iba-iba ang mga hosted na kapaligiran sa maraming aspeto.
Sa kaso ng managed server, kailangan ng server ng write access sa ilang directory upang gumana nang maayos ang script:
- Ginagamit ang directory na /limesurvey/tmp para sa mga import/upload at dapat itakda sa Read & Write para sa inyong web server
- Dapat ding may Read & Write para sa inyong web server ang upload/directory at lahat ng sub-directory nito upang makapag-upload ng mga larawan at media file
- Dapat itakda sa Read Only ang iba pang mga directory at file
- Depende sa configuration ng inyong web server, kailangan ninyong i-chmod ang mga karapatan sa mga writable na folder sa 755 o 777 para masulatan ito ng web server. Subukan muna ang 755; kung hindi gumana, i-'upgrade' sa 777
- Maaari rin ninyong subukang alisin ang read access ng ibang user sa config.php sa pamamagitan ng pagtatakda ng mga pahintulot ng file na ito sa 750 - kung hindi gumana, i-'upgrade' sa 755
Mga pahintulot sa file sa Windows
Kung gumagamit kayo ng Windows server, tiyaking pinapayagan ng admin folder ang may-ari ng web server process na magsulat ng mga file sa directory na ito. Maaaring itakda sa read-only at execute ang iba pang mga file.
Iba pang isyu sa seguridad
Mga rekomendasyon lamang ang sumusunod. Ligtas na ang LimeSurvey sa pangkalahatan kahit walang mga karagdagang hakbang na ito. Gayunpaman, kung nangongolekta kayo ng napakasensitibong data, makakatulong ang kaunting karagdagang seguridad:
Paggamit ng SSL
Inirerekomenda namin sa pangkalahatan ang paggamit ng SSL para sa sensitibong data ng survey. Karaniwan ninyong ina-enable ang SSL sa pamamagitan ng tamang pag-configure ng inyong web server at paggamit ng SSL certificate. Kung na-enable ninyo ang SSL, dapat ninyong ipatupad ang SSL sa lahat ng oras mula sa mga pangkalahatang setting ng LimeSurvey. Bukod dito, maaari ninyong itakda na gumamit lamang ng mga 'secure' na cookie sa pamamagitan ng pag-edit ng kaukulang opsyon sa config.php.
Ang access sa config.php file
Ang file na /application/config/config.php ay naglalaman ng username at password para sa iyong database server. Ito ay nagdudulot ng ilang isyu sa seguridad, lalo na kung gumagamit ka ng login na may mataas na antas ng administratibong access sa iyong database. Kung magkaroon ng error na magbabalik ng nilalaman ng PHP file na ito sa browser ng isang user, maaaring malagay sa panganib ang password ng iyong database at iba pang detalye (gayunpaman, napakaliit ng posibilidad ng ganitong sitwasyon). Ang pinakamainam na paraan para mabawasan ang panganib ay ang gumawa ng hiwalay na login na may mga partikular na karapatan lamang sa iyong LimeSurvey database.
Ang isa pang paraan para ma-secure ang impormasyong ito ay ang ilagay ang impormasyon mula sa file na /application/config/config.php sa isang non-web directory, ibig sabihin, para sa mga gumagamit ng Apache, ito ang directory sa itaas ng folder na htdocs (kilala rin bilang public_html o www). Sa madaling salita, gagamitin mo pa rin ang config.php, ngunit isang linya lamang ang laman nito - isang linyang nag-i-include ng file na may AKTUWAL na impormasyon sa configuration (hal.: <?php return include("/home/hostfolder/safedata/configreal.php"); ?>). Alisin ang lahat ng aktuwal na impormasyon sa configuration mula sa /application/config/config.php at i-paste ito sa kabilang file (configreal.php) na binanggit sa file na /application/config/config.php. Dapat nasa isang non-web directory ang kabilang file na ito. Pagkatapos, hindi na maglalaman ang /application/config/config.php ng mga password ng database at iba pa - tanging ang pangalan na lang ng file na MAY laman ng impormasyon ng database.
Dahil dito, hindi mo na kailangang baguhin ang lahat ng iba pang file na nag-i-include ng /application/config/config.php, sapagkat 'inire-redirect' sila ng config.php patungo sa configuration file na nasa isang non-web directory, na naglalaman ng lahat ng tunay na impormasyon sa configuration.
Gayundin, huwag gamitin ang "admin" o "administrator" bilang default na user. Pumunta sa iyong MySQL database (o sa database kung saan mo na-install ang LimeSurvey) at palitan ang default na username na "admin" ng anumang gusto mo (hal. "admin_xyz"). Magiging mas mahirap nang hulaan ang bagong username ng administrator. Tandaan, ito ay isa sa dalawang variable na magagamit ng mga manghihimasok para makapasok. Ang password ng admin ang isa pang variable. Kaya piliin ang pareho nang may matinding pag-iingat.
Content Security Policy (CSP)
DISCLAIMER - Ang CSP na ibinigay dito ay halimbawa lamang at hindi dapat gamitin nang eksakto kung ano ito. Ito ay panimulang punto lamang at DAPAT mo itong iangkop sa iyong pangangailangan at subukan nang mabuti.
<IfModule mod_headers.c>
Header always set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; base-uri 'none'; form-action 'self'; frame-ancestors 'self'; upgrade-insecure-requests" "expr=%{CONTENT_TYPE} =~ m#text\/(html|javascript)|application\/pdf|xml#i"
</IfModule>