x

บทหลัก

  1. LimeSurvey Cloud เทียบกับ LimeSurvey CE
  2. คู่มือเริ่มต้นใช้งานฉบับย่อ - LimeSurvey 3.0+
  3. การติดตั้ง - LimeSurvey CE
  4. วิธีออกแบบแบบสำรวจที่ดี (คู่มือ)
  5. เริ่มต้นใช้งาน
  6. การดูแลระบบ LimeSurvey
  7. แบบสำรวจ - บทนำ
  8. การตั้งค่าแบบสอบถาม
  9. เมนูสำรวจ
  10. โครงสร้างการสำรวจ
  11. คำถาม - บทนำ
  12. กลุ่มคำถาม - บทนำ
  13. แบบสำรวจ - การจัดการ
  14. ตัวเลือกแถบเครื่องมือแบบสำรวจ
  15. แบบสำรวจหลายภาษา
  16. ExpressionScript Engine - คู่มือเริ่มต้นอย่างรวดเร็ว
  17. ฟีเจอร์ขั้นสูงและฟีเจอร์ที่ไม่ได้จัดหมวดหมู่
  18. คำถามที่พบบ่อยทั่วไป
  19. การแก้ไขปัญหา
  20. วิธีแก้ปัญหาชั่วคราว (Workarounds)
  21. สัญญาอนุญาต
  22. บันทึกการเปลี่ยนแปลงของเวอร์ชัน
  23. ปลั๊กอิน
 Actions

คำแนะนำด้านความปลอดภัยในการติดตั้ง

From LimeSurvey Manual

หน้านี้อาจแปลด้วยเครื่องและอาจมีข้อผิดพลาด ดูต้นฉบับภาษาอังกฤษ · ปรับปรุงคำแปลนี้
This page is a translated version of the page Installation security hints and the translation is 100% complete.

ทั่วไป

โปรดทราบว่าเราให้ความสำคัญกับปัญหาด้านความปลอดภัยเป็นอย่างยิ่งและตอบสนองอย่างรวดเร็ว ดังนั้น หากคุณทราบถึงปัญหาด้านความปลอดภัยใน LimeSurvey โปรดแจ้งให้เราทราบโดยเปิดรายงานข้อบกพร่องใน ระบบติดตามข้อบกพร่อง ของเรา (โปรดระบุระดับความรุนแรงหรือหมวดหมู่ของข้อบกพร่องเป็น 'security')

สำหรับรายละเอียดเพิ่มเติม โปรดดู นโยบายความปลอดภัย ของเราเกี่ยวกับการรายงานปัญหาด้านความปลอดภัย/ช่องโหว่

การจำกัดการเข้าถึงของเว็บเซิร์ฟเวอร์

หากคุณใช้ Apache LimeSurvey มีไฟล์ htaccess หลายไฟล์สำหรับการจำกัดการเข้าถึง โปรดตรวจสอบว่าคุณอนุญาตให้ใช้ไฟล์ htaccess ที่มาพร้อมกันด้วย AllowOverride

หากใช้เว็บเซิร์ฟเวอร์อื่น หรือหากคุณต้องการใช้ AllowOverride None คุณต้อง:

  • (ไม่บังคับ) ปิดการเข้าถึงไฟล์ทั้งหมดใน application, protected, framework และ themes/*/views
  • ปิดการเข้าถึงไฟล์ที่ผู้ใช้อัปโหลดใน /upload/surveys/.*/fu_[a-z0-9]
  • (ไม่บังคับ) ปิดการเข้าถึงไฟล์ที่สามารถรันได้ในไดเรกทอรีอัปโหลด

คุณสามารถดูตัวอย่างสำหรับ nginx ได้ใน General Faq ของเรา

สิทธิ์ของไฟล์บน Linux

หากคุณใช้เซิร์ฟเวอร์ Linux จำเป็นต้องกำหนดสิทธิ์ของไฟล์ให้เหมาะสมเพื่อรักษาความปลอดภัยของการติดตั้ง LimeSurvey ของคุณ

ข้อเท็จจริงพื้นฐานเกี่ยวกับสิทธิ์ของไฟล์บน Linux/*nix

ระบบปฏิบัติการ Linux/*nix รองรับผู้ใช้หลายคน ซึ่งหมายความว่านอกจากบัญชีส่วนตัวของคุณแล้ว อาจมีบัญชีผู้ใช้อื่นอยู่ในระบบ และคุณควรระมัดระวังในการให้สิทธิ์แก่ผู้ใช้อื่น

คำแนะนำ: การกำหนดสิทธิ์ของไฟล์มีความสำคัญเป็นพิเศษเพื่อปกป้องไฟล์การกำหนดค่าที่เก็บข้อมูลสำคัญ เช่น รหัสผ่าน

โปรดจำไว้ว่าบัญชี 'root' จะได้รับสิทธิ์เข้าถึงไฟล์ของคุณเสมอ (ไม่ว่าคุณจะกำหนดสิทธิ์ของไฟล์อย่างไรก็ตาม) เนื่องจากเป็นผู้ใช้ระดับผู้ดูแลระบบสูงสุด

เว็บเซิร์ฟเวอร์ (ที่รัน LimeSurvey) ทำงานภายใต้ตัวตน (ผู้ใช้) หนึ่งเช่นกัน บน Linux โดยทั่วไปจะเป็นผู้ใช้ 'www', 'www-data' (บน Debian/Ubuntu), 'apache' หรือ 'nobody' อย่างไรก็ตาม ผู้ให้บริการโฮสติ้งบางรายใช้ระบบ (เช่น suexec) ที่ทำให้สามารถรันสคริปต์ LimeSurvey ด้วยผู้ใช้ส่วนตัวของคุณได้ แน่นอนว่าผู้ใช้เว็บเซิร์ฟเวอร์ต้องมีสิทธิ์อ่านไฟล์ LimeSurvey แต่ไดเรกทอรีย่อยของ LimeSurvey เพียงส่วนน้อยเท่านั้นที่ผู้ใช้เว็บเซิร์ฟเวอร์ต้องเขียนได้

คำแนะนำ: การเพิกถอนสิทธิ์การเขียนของผู้ใช้เว็บเซิร์ฟเวอร์สำหรับไดเรกทอรีย่อยของ LimeSurvey ที่ไม่จำเป็นต้องใช้ ถือเป็นประโยชน์อย่างยิ่ง เพราะแม้จะมีการค้นพบช่องโหว่ใน LimeSurvey ไฟล์หลักก็ยังคงได้รับการปกป้องจากการแก้ไขโดยไม่ได้รับอนุญาต ด้วยสิทธิ์ของระบบไฟล์

การกำหนดสิทธิ์ของไฟล์บนระบบ Linux ที่คุณดูแลเอง

หากคุณดูแลการกำหนดค่าเว็บเซิร์ฟเวอร์และระบบปฏิบัติการด้วยตนเอง (คุณเป็นเจ้าของเซิร์ฟเวอร์จริง หรือเช่าเซิร์ฟเวอร์เสมือนที่คุณมีสิทธิ์ root) คุณอาจพิจารณาคำแนะนำด้านล่างนี้

ก่อนอื่น คุณสามารถกำหนดเจ้าของและกลุ่มของไฟล์ LimeSurvey เพื่อให้การตั้งค่าสิทธิ์ของไฟล์ง่ายขึ้น กลยุทธ์ที่เป็นไปได้คือกำหนดเจ้าของไฟล์ LimeSurvey เป็นชื่อผู้ใช้ส่วนตัวของคุณ และกำหนดกลุ่มของไฟล์ LimeSurvey เป็นกลุ่มของเว็บเซิร์ฟเวอร์ โดยปกติกลุ่มของเว็บเซิร์ฟเวอร์นี้จะมีเพียงบัญชีของเว็บเซิร์ฟเวอร์ (และอาจมีบัญชีเว็บมาสเตอร์อื่นอีกหนึ่งบัญชี) ตัวอย่างเช่น หากชื่อผู้ใช้ของคุณคือ 'myaccount' และผู้ใช้เว็บเซิร์ฟเวอร์คือ 'apache' ในกลุ่ม 'apache' คุณสามารถใช้คำสั่งต่อไปนี้ผ่านทางเชลล์: $ chown -R myaccount:apache limesurvey/ จากนั้นจึงกำหนดสิทธิ์ของไฟล์และไดเรกทอรีย่อย

เพื่อให้สคริปต์ทำงานได้อย่างถูกต้อง จำเป็นต้องมีสิทธิ์เขียนในบางไดเรกทอรี:

  • ไดเรกทอรี /limesurvey/application/config ต้องมีสิทธิ์ อ่านและเขียน เพื่อบันทึกการตั้งค่าการกำหนดค่าของแอปพลิเคชัน
  • ไดเรกทอรี /limesurvey/tmp และไดเรกทอรีย่อยใช้สำหรับการนำเข้า/อัปโหลด และควรตั้งค่าเป็น อ่านและเขียน สำหรับเว็บเซิร์ฟเวอร์ของคุณ
  • ไดเรกทอรี upload/ และไดเรกทอรีย่อยทั้งหมดต้องมีสิทธิ์ อ่านและเขียน เช่นกัน เพื่อให้สามารถอัปโหลดรูปภาพและไฟล์สื่อได้
  • ไดเรกทอรีและไฟล์อื่นๆ ทั้งหมดสามารถตั้งค่าเป็น อ่านอย่างเดียว

การกำหนดสิทธิ์ของไฟล์บนเว็บเซิร์ฟเวอร์ที่เช่าโฮสติ้ง

เนื่องจากไม่มีขั้นตอนมาตรฐานในการรักษาความปลอดภัยของเว็บแอปพลิเคชันบนสภาพแวดล้อมโฮสติ้ง จึงค่อนข้างยาก เพราะสภาพแวดล้อมโฮสติ้งแต่ละแห่งแตกต่างกันในหลายด้าน

ในกรณีของเซิร์ฟเวอร์ที่มีผู้ดูแลให้ เซิร์ฟเวอร์ต้องมีสิทธิ์เขียนในบางไดเรกทอรีเพื่อให้สคริปต์ทำงานได้อย่างถูกต้อง:

  • ไดเรกทอรี /limesurvey/tmp ใช้สำหรับการนำเข้า/อัปโหลด และควรตั้งค่าเป็น อ่านและเขียน สำหรับเว็บเซิร์ฟเวอร์ของคุณ
  • ไดเรกทอรี upload/ และไดเรกทอรีย่อยทั้งหมดต้องมีสิทธิ์ อ่านและเขียน สำหรับเว็บเซิร์ฟเวอร์ของคุณเช่นกัน เพื่อให้สามารถอัปโหลดรูปภาพและไฟล์สื่อได้
  • ไดเรกทอรีและไฟล์อื่นๆ ควรตั้งค่าเป็น อ่านอย่างเดียว
คำแนะนำ:
  • ขึ้นอยู่กับการกำหนดค่าเว็บเซิร์ฟเวอร์ของคุณ คุณอาจต้องใช้ chmod เพื่อตั้งสิทธิ์ของโฟลเดอร์ที่เขียนได้เป็น 755 หรือ 777 เพื่อให้เว็บเซิร์ฟเวอร์เขียนได้ ลอง 755 ก่อน หากไม่ได้ผลจึง 'อัปเกรด' เป็น 777
  • คุณยังสามารถลองลบสิทธิ์การอ่านของผู้ใช้อื่นสำหรับ config.php โดยตั้งสิทธิ์ของไฟล์นี้เป็น 750 - หากไม่ได้ผล ให้ 'อัปเกรด' เป็น 755

สิทธิ์ของไฟล์บน Windows

หากคุณใช้เซิร์ฟเวอร์ Windows คุณควรตรวจสอบให้แน่ใจว่าโฟลเดอร์ admin อนุญาตให้เจ้าของโพรเซสของเว็บเซิร์ฟเวอร์เขียนไฟล์ลงในไดเรกทอรีนี้ได้ ไฟล์ที่เหลือสามารถตั้งค่าเป็นอ่านอย่างเดียวและเรียกใช้งานได้

ปัญหาด้านความปลอดภัยอื่นๆ

ต่อไปนี้เป็นเพียงข้อแนะนำเท่านั้น โดยทั่วไป LimeSurvey มีความปลอดภัยสูงอยู่แล้วแม้ไม่มีมาตรการเพิ่มเติมเหล่านี้ อย่างไรก็ตาม หากคุณเก็บรวบรวมข้อมูลที่มีความละเอียดอ่อนอย่างยิ่ง การเพิ่มความปลอดภัยอีกเล็กน้อยอาจช่วยได้:

การใช้ SSL

โดยทั่วไปเราแนะนำให้ใช้ SSL สำหรับข้อมูลแบบสำรวจที่มีความละเอียดอ่อน คุณสามารถเปิดใช้ SSL ได้โดยกำหนดค่าเว็บเซิร์ฟเวอร์อย่างถูกต้องและใช้ใบรับรอง SSL หากคุณเปิดใช้ SSL แล้ว คุณควรบังคับใช้ SSL ตลอดเวลาจากการตั้งค่าโดยรวมของ LimeSurvey นอกจากนี้ คุณยังสามารถตั้งค่าให้ใช้คุกกี้แบบ 'secure' เท่านั้นได้ โดยแก้ไขตัวเลือกที่เกี่ยวข้องใน config.php

การเข้าถึงไฟล์ config.php

  คุณต้องอัปเดตไฟล์ application/config/config.php หลังจากติดตั้งครั้งแรกเสร็จสมบูรณ์และใช้งานได้แล้วเท่านั้น


ไฟล์ /application/config/config.php มีชื่อผู้ใช้และรหัสผ่านสำหรับเซิร์ฟเวอร์ฐานข้อมูลของคุณ ซึ่งก่อให้เกิดปัญหาด้านความปลอดภัยบางประการ โดยเฉพาะอย่างยิ่งหากคุณใช้บัญชีเข้าสู่ระบบที่มีสิทธิ์ผู้ดูแลระบบระดับสูงต่อฐานข้อมูลของคุณ หากเกิดข้อผิดพลาดบางอย่างที่ทำให้เนื้อหาของไฟล์ PHP นี้ถูกส่งไปยังเบราว์เซอร์ของผู้ใช้ รหัสผ่านฐานข้อมูลและรายละเอียดอื่น ๆ ของคุณอาจถูกเปิดเผยได้ (อย่างไรก็ตาม สถานการณ์นี้มีโอกาสเกิดขึ้นน้อยมาก) วิธีที่ดีที่สุดในการลดความเสี่ยงคือการสร้างบัญชีเข้าสู่ระบบเฉพาะที่มีสิทธิ์เฉพาะกับฐานข้อมูล LimeSurvey ของคุณเท่านั้น

อีกวิธีหนึ่งในการรักษาความปลอดภัยของข้อมูลนี้คือการย้ายข้อมูลจากไฟล์ /application/config/config.php ไปไว้ในไดเรกทอรีที่ไม่สามารถเข้าถึงผ่านเว็บได้ เช่น สำหรับผู้ใช้ Apache คือไดเรกทอรีที่อยู่เหนือโฟลเดอร์ htdocs (หรือที่เรียกว่า public_html หรือ www) โดยหลักการคือคุณยังคงใช้ config.php แต่ในไฟล์นั้นจะมีเพียงหนึ่งบรรทัดซึ่งเรียกใช้ไฟล์ที่มีข้อมูลการกำหนดค่าจริง (เช่น <?php return include("/home/hostfolder/safedata/configreal.php"); ?>) ให้ลบข้อมูลการกำหนดค่าจริงทั้งหมดออกจาก /application/config/config.php แล้ววางลงในไฟล์อื่น (configreal.php) ที่ระบุไว้ในไฟล์ /application/config/config.php ไฟล์อื่นนี้ควรอยู่ในไดเรกทอรีที่ไม่สามารถเข้าถึงผ่านเว็บได้ จากนั้น /application/config/config.php จะไม่มีรหัสผ่านฐานข้อมูลหรือข้อมูลสำคัญอื่น ๆ เหลืออยู่ แต่จะมีเพียงชื่อไฟล์ที่ มี ข้อมูลฐานข้อมูลอยู่เท่านั้น

วิธีนี้ช่วยให้ไม่ต้องแก้ไขไฟล์อื่น ๆ ทั้งหมดที่เรียกใช้ /application/config/config.php เนื่องจาก config.php จะ 'เปลี่ยนเส้นทาง' ไปยังไฟล์การกำหนดค่าที่อยู่ในไดเรกทอรีที่ไม่สามารถเข้าถึงผ่านเว็บได้ ซึ่งมีข้อมูลการกำหนดค่าจริงทั้งหมด

นอกจากนี้ อย่าใช้ "admin" หรือ "administrator" เป็นผู้ใช้เริ่มต้น ให้ไปที่ฐานข้อมูล MySQL ของคุณ (หรือฐานข้อมูลที่คุณติดตั้ง LimeSurvey ไว้) แล้วเปลี่ยนชื่อบัญชีเริ่มต้น "admin" เป็นชื่ออื่นตามที่คุณต้องการ (เช่น "admin_xyz") ซึ่งจะทำให้การเดาชื่อบัญชีใหม่ของผู้ดูแลระบบยากขึ้นมาก โปรดจำไว้ว่านี่เป็นหนึ่งในสองตัวแปรที่ผู้บุกรุกใช้เพื่อเข้าถึงระบบ ส่วนรหัสผ่านของผู้ดูแลระบบเป็นอีกตัวแปรหนึ่ง ดังนั้นโปรดเลือกทั้งสองอย่างด้วยความระมัดระวังเป็นอย่างยิ่ง

นโยบายความปลอดภัยของเนื้อหา (Content Security Policy หรือ CSP)

ข้อจำกัดความรับผิดชอบ - CSP ที่แสดงไว้ที่นี่เป็นเพียงตัวอย่างเท่านั้น และไม่ได้มีไว้ให้นำไปใช้ตามนี้ทุกประการ ใช้เป็นจุดเริ่มต้นเท่านั้น และคุณจะต้องปรับให้เหมาะกับความต้องการของคุณและทดสอบอย่างละเอียด

<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>