Petua keselamatan pemasangan
From LimeSurvey Manual
Umum
Sila ambil perhatian bahawa kami mengambil serius isu keselamatan dan bertindak dengan pantas. Oleh itu, jika anda mengetahui sebarang masalah keselamatan dalam LimeSurvey, sila maklumkan kepada kami dengan membuka laporan pepijat di penjejak pepijat kami (sila tandakan pepijat tersebut dengan tahap keterukan atau kategori 'security').
Untuk butiran lanjut, sila semak Dasar keselamatan kami bagi melaporkan isu/kelemahan keselamatan.
Sekatan pelayan web
Jika anda menggunakan Apache, LimeSurvey menyertakan beberapa fail htaccess untuk sekatan. Pastikan anda membenarkan htaccess yang disertakan dengan AllowOverride.
Dengan pelayan web lain atau jika anda ingin menggunakan AllowOverride None : anda mesti
- (pilihan) lumpuhkan akses kepada semua fail dalam application, protected, framework dan themes/*/views
- lumpuhkan akses kepada fail yang dimuat naik oleh pengguna /upload/surveys/.*/fu_[a-z0-9]
- (pilihan) lumpuhkan akses kepada fail boleh laksana dalam direktori muat naik
Anda boleh mendapatkan contoh untuk nginx dalam Soalan Lazim Umum
Kebenaran fail Linux
Jika anda menggunakan pelayan Linux, menetapkan kebenaran fail dengan sewajarnya diperlukan untuk melindungi pemasangan LimeSurvey anda.
Fakta asas tentang kebenaran fail Linux/*nix
Sistem pengendalian Linux/*nix adalah berbilang pengguna. Ini bermakna, selain akaun peribadi anda, akaun pengguna lain mungkin wujud dalam sistem dan anda perlu berhati-hati dengan kebenaran yang anda berikan kepada pengguna lain.
Ingat bahawa akaun 'root' sentiasa diberi kebenaran untuk mengakses fail anda (walau apa pun kebenaran fail yang anda tetapkan) kerana ia adalah pengguna pentadbir super.
Pelayan web (yang menjalankan LimeSurvey) juga berjalan di bawah identiti (pengguna) tertentu. Pada Linux, ini biasanya pengguna 'www', 'www-data' (pada Debian/Ubuntu), 'apache' atau 'nobody'. Walau bagaimanapun, sesetengah syarikat pengehosan menggunakan sistem (seperti suexec) yang membolehkan skrip LimeSurvey dijalankan dengan pengguna peribadi anda. Sudah tentu, pengguna pelayan web mesti mempunyai hak untuk membaca fail LimeSurvey. Namun, hanya sebilangan kecil subdirektori LimeSurvey yang perlu boleh ditulis oleh pengguna pelayan web.
Menetapkan kebenaran fail pada sistem Linux yang diuruskan sendiri
Jika anda menguruskan konfigurasi pelayan web dan sistem pengendalian anda sendiri (anda pemilik pelayan fizikal atau menyewa pelayan maya yang anda mempunyai akses root), anda boleh mempertimbangkan cadangan di bawah.
Anda boleh menetapkan pemilik dan kumpulan fail LimeSurvey terlebih dahulu supaya penetapan kebenaran fail menjadi lebih mudah. Satu strategi yang mungkin ialah menetapkan pemilik fail LimeSurvey kepada nama pengguna peribadi anda, dan kumpulan fail LimeSurvey kepada kumpulan pelayan web. Biasanya, kumpulan pelayan web ini hanya mengandungi akaun pelayan web (dan mungkin akaun webmaster yang lain). Contohnya, jika nama pengguna anda ialah 'myaccount' dan pengguna pelayan web ialah 'apache' dalam kumpulan 'apache', maka, daripada akses shell, anda boleh menggunakan arahan berikut: $ chown -R myaccount:apache limesurvey/. Seterusnya, tetapkan kebenaran fail dan subdirektori.
Agar skrip berfungsi dengan betul, akses tulis kepada beberapa direktori diperlukan:
- Direktori /limesurvey/application/config memerlukan Baca & Tulis untuk menyimpan tetapan konfigurasi aplikasi
- Direktori /limesurvey/tmp dan subdirektorinya digunakan untuk import/muat naik dan perlu ditetapkan kepada Baca & Tulis untuk pelayan web anda
- Direktori upload/ dan semua subdirektorinya juga mesti ditetapkan kebenaran Baca & Tulis untuk membolehkan muat naik gambar dan fail media
- Semua direktori dan fail lain boleh ditetapkan kepada Baca Sahaja
Menetapkan kebenaran fail pada pelayan web terhos
Memandangkan sukarnya prosedur piawai untuk melindungi aplikasi web dalam persekitaran terhos, ia agak sukar kerana persekitaran terhos berbeza dalam pelbagai aspek.
Dalam kes pelayan terurus, pelayan memerlukan akses tulis kepada beberapa direktori supaya skrip berfungsi dengan betul:
- Direktori /limesurvey/tmp digunakan untuk import/muat naik dan perlu ditetapkan kepada Baca & Tulis untuk pelayan web anda
- Direktori upload/ dan semua subdirektorinya juga mesti mempunyai Baca & Tulis untuk pelayan web anda bagi membolehkan muat naik gambar dan fail media
- Direktori dan fail lain perlu ditetapkan kepada Baca Sahaja
- Bergantung pada konfigurasi pelayan web anda, anda perlu menjalankan chmod pada folder yang boleh ditulis kepada 755 atau 777 supaya ia boleh ditulis oleh pelayan web. Cuba 755 dahulu, jika tidak berjaya, 'tingkatkan' kepada 777
- Anda juga boleh cuba mengalih keluar akses baca pengguna lain kepada config.php dengan menetapkan kebenaran fail ini kepada 750 - jika tidak berjaya, 'tingkatkan' kepada 755
Kebenaran fail Windows
Jika anda menggunakan pelayan Windows, anda perlu memastikan folder admin membenarkan pemilik proses pelayan web menulis fail ke direktori ini. Fail selebihnya boleh ditetapkan kepada baca sahaja dan laksana.
Isu keselamatan lain
Yang berikut hanyalah cadangan. LimeSurvey secara amnya sangat selamat tanpa langkah tambahan ini. Namun, jika anda mengumpul data yang sangat sensitif, sedikit keselamatan tambahan boleh membantu:
Penggunaan SSL
Kami secara amnya mengesyorkan penggunaan SSL untuk data tinjauan yang sensitif. Anda biasanya mendayakan SSL dengan mengkonfigurasi pelayan web anda dengan betul dan menggunakan sijil SSL. Jika anda telah mendayakan SSL, anda perlu menguatkuasakan SSL sepanjang masa daripada tetapan global LimeSurvey. Selain itu, anda boleh menetapkan penggunaan kuki 'secure' sahaja dengan mengedit pilihan berkaitan dalam config.php.
Akses kepada fail config.php
Fail /application/config/config.php mengandungi nama pengguna dan kata laluan untuk pelayan pangkalan data anda. Hal ini menimbulkan beberapa isu keselamatan, terutamanya jika anda menggunakan log masuk yang mempunyai akses pentadbiran peringkat tinggi kepada pangkalan data anda. Sekiranya berlaku ralat yang menyebabkan kandungan fail PHP ini dihantar kepada pelayar pengguna, kata laluan pangkalan data dan butiran lain anda mungkin terdedah (namun, senario ini sangat tidak mungkin berlaku). Cara terbaik untuk mengurangkan risiko ialah dengan menyediakan log masuk khusus yang hanya mempunyai hak khusus kepada pangkalan data LimeSurvey anda.
Cara lain untuk melindungi maklumat ini ialah dengan meletakkan maklumat daripada fail /application/config/config.php dalam direktori bukan web, iaitu bagi pengguna Apache ialah direktori di atas folder htdocs (juga dikenali sebagai public_html atau www). Pada dasarnya, anda akan menggunakan config.php, tetapi hanya mengekalkan satu baris di dalamnya - baris yang memasukkan fail yang mengandungi maklumat konfigurasi SEBENAR (cth: <?php return include("/home/hostfolder/safedata/configreal.php"); ?>). Alih keluar semua maklumat konfigurasi sebenar daripada /application/config/config.php dan tampalkannya ke dalam fail lain (configreal.php) yang disebut dalam fail /application/config/config.php. Fail lain ini hendaklah diletakkan dalam direktori bukan web. Dengan itu, /application/config/config.php tidak akan mengandungi kata laluan pangkalan data dan sebagainya - hanya nama fail yang MENGANDUNGI maklumat pangkalan data.
Dengan cara ini, anda tidak perlu mengubah semua fail lain yang menyertakan /application/config/config.php, kerana config.php 'mengalihkan mereka' ke fail konfigurasi yang terletak dalam direktori bukan web yang mengandungi semua maklumat konfigurasi sebenar.
Selain itu, jangan gunakan "admin" atau "administrator" sebagai pengguna lalai. Pergi ke pangkalan data MySQL anda (atau pangkalan data tempat anda memasang LimeSurvey) dan tukar nama pengguna lalai "admin" kepada apa-apa yang anda suka (cth: "admin_xyz"). Nama pengguna baharu pentadbir kini akan jauh lebih sukar diteka. Ingat, ini ialah salah satu daripada dua pemboleh ubah yang boleh digunakan penceroboh untuk mendapat akses. Kata laluan pentadbir ialah pemboleh ubah yang satu lagi. Oleh itu, pilih kedua-duanya dengan amat berhati-hati.
Content Security Policy (CSP)
PENAFIAN - CSP yang disediakan di sini hanyalah contoh dan tidak dimaksudkan untuk digunakan secara bulat-bulat. Ia dimaksudkan sebagai titik permulaan dan anda MESTI menyesuaikannya dengan keperluan anda serta mengujinya dengan teliti.
<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>