หลังจากที่เราได้ทำการติดตั้ง OpenCart 3 ไปแล้วในเนื้อหา
ตอนแรก และติดตั้ง vQmod สำหรับรองรับโมดูลส่วนขยายเพิ่มเติม
ซึ่งในขั้นตอนการติดตั้ง เราจะจะมีการอนุญาตให้เขียนไฟล์บางตัว ที่มีความสำคัญ
นั้นก็คือไฟล์
- ไฟล์ index.php และ admin/index.php ควรกำหนด permissions เป็น 755 หรือ 777
ในขั้นตอนที่แล้ว เราเปิดอนุญาตให้สามารถเขียนไฟล์ ก็เพื่อติดตั้ง vQmod ซึ่งตัวติดตั้ง
จะมีการเพิ่มคำสั่ง การเรียกใช้งานไฟล์ vQmod ในไฟล์ดังกล่าว
หลังจากเราติดตั้งแล้ว ก็ไม่จำเป็นต้องให้สามารถเขียนไฟล์ได้อีก ก็ให้ปรับกลับมาเป็น
กำหนด permissions เป็น 644 หรือ 444
ความปลอดภัยการใช้งาน OpenCart
เกี่ยวกับการเพิ่มความปลอดภัยการใช้งาน OpenCart สามารถดูรายละเอียดต่างๆ
ตามนี้เป็นแนวทาง
ลบโฟลเดอร์ติดตั้ง
เราควรทำการลบโฟลเดอร์ install หลังจากติดตั้ง OpenCart เรียบร้อยแล้ว
หรือสามารถเปลี่ยนชื่อโฟลเดอร์เป็นชื่ออื่นแทนก็ได้
การป้องกันโฟลเดอร์ต่างๆ
โฟลเดอร์ Admin
อย่างที่ทราบกันดีว่า ส่วนควบคุมร้านทั้งหมดจะเข้าผ่านทาง path ที่ชื่อ /admin ดังนั้น
สิ่งสำคัญที่สุดก็คือการกำหนดชื่อผู้ใช้และรหัสผ่านที่มีความปลอดภัยสูง เพื่อป้องกันไม่ให้
ใครสามารถเข้าไปจัดการร้านของเราได้ เช่นอาจจะใช้ตัวช่วยสร้างรหัสผ่านที่มีความปลอดภัย
อย่างเว็บไซต์ https://passwordsgenerator.net เป็นแนวทาง
การเปลี่ยน path ของระบบจัดการก็สามารถเพิ่มความปลอดภัยให้กับระบบจัดการร้านได้
แต่ก็ต้องระวังหากจะแก้ไข ควรเลือกใช้งาน extension ที่ไม่ต้องแก้ไขไฟล์โดยตรงจะเป็นวิธีที่
ดีที่สุด
นอกจากนั้นเราสามารถใช้งาน .htaccess และ .htpasswd เพื่อกำหนดสิทธิ์การเข้าถึง /admin
เช่น สมมติอนุญาตเฉพาะ ip ที่เรากำหนดเท่านั้นถึงจะเข้าหน้า /admin ได้ ก็จะได้ไฟล์ .htaccess
ในโฟลเดอร์ admin ประมาณนี้
<Files *.*> Order Deny,Allow Deny from all Allow from "your ip address" </Files>
แทนค่า your ip address เป็นค่า ip ของเรา
หรือจะถ้าต้องการป้องกันโฟลเดอร์ admin ด้วยรหัสผ่าน ก็อาจจะใช้งาน .htpasswd เพิ่มกำหนด
ให้ต้องกรอกชื่อผู้ใช้และรหัสผ่านก่อนอนุญาตเพิ่มเติมก็ได้ อย่างไรก็ดีวิธีการกำหนดควรทำผานระบบ
จัดการของ server จะเป็นวิธีที่ดีที่สุด
การกำหนดค่าต่างๆ ที่กล่าวข้างต้น อาจจะมีผลต่อการทำงานหากกำหนดค่าผิดพลาด ควรยกเลิก
และใช้ค่าตามเดิม วิธีที่ดีที่สุดข้้นต้น และทำให้เราสะดวกใช้งานด้วยก็คือ การกำหนดชื่อผู้ใช้และรหัส
ผ่านให้มีความปลอดภัยก็เพียงพอแล้ว
โฟลเดอร์ Catalog
เราสามารถกำหนด .htaccess เพื่อจำกัดการเข้าถึงจากแหล่งอื่นได้ โดยสามารถเลือกป้องกันเฉพาะไฟล์
ที่สำคัญ ในขั้นตอนการกำหนดเงื่อนไข ในรูปแบบดังนี้
<FilesMatch "\.(php|twig|txt)$"> Order Deny,Allow Deny from all Allow from "your ip address" </FilesMatch>
คำสั่งข้างตันจะป้องกันกานเข้าถึงไฟล์ .twig, .php, และ .txt ไฟล์ จาก ip ที่ไม่อื่นยกเว้นที่กำหนดไว้
ip ส่วนนี้จะหมายถึง static ip ของเว็บไซต์หรือของร้านเรา
* หากไม่มั่นใจ ไม่จำเป็นต้องกำหนดการป้องกันในลักษณะนี้ก็ได้
โฟลเดอร์ System
เราสามารถกำหนด .htaccess เช่นเดียวกับ admin โฟลเดอร์
การกำหนด permissions ให้กับไฟล์
เพื่อความปลอดภัยรายการชื่อไฟล์ต่อไปนี้ จำเป็นจะต้องกำหนดหรือตั้งค่าให้เป็น
644 หรือ 444 เพื่อไม่ให้ถูกเขียนทับจากภายนอกได้
- config.php
- index.php
- admin/config.php
- admin/index.php
- system/startup.php
แนวทางข้างต้น สามารถเลือกจะทำหรือไม่ก็ได้ขึ้นกับระดับความปลอดภัยของ server ที่เราใช้งานด้วย
เช่น บาง server มีระบบจัดการดีอยู่แล้วก็ไม่จำเป็นต้องกำหนดเพิ่มเติม โดยเฉพาะการใช้งาน .htaccess
ก็อาจจะไม่จำเป็นเท่ากรณีอื่นๆ
ความปลอดภัยของที่จัดเก็บข้อมูล
หลังจากเราทำการติดตั้ง OpenCart 3 แล้วทำการล็อกอินเข้าระบบจัดการ ก็จะพบกับหน้าตาแจ้งเตือน
ด้วยข้อความ Important Security Notification! ตามรูปด้านล่าง
ปกติแล้วโฟลเดอร์ storage จะอยู่ใน system/storage เป็นที่เก็บข้อมูลสำคัญๆ เช่น ไฟล์ cache
ไฟล์ session ไฟล์ logs เป็นต้น ถ้าไม่มีการป้องกันใดๆ ไฟล์เหล่านี้ก็อาจจะสามารถเข้าถึงจากภายนอกได้ง่าย
ทั้งนี้ก็เพราะเป็น path ที่สามารถเข้าถึงผ่านหน้า url ดังนั้นหลายๆ framework ก็หันมาให้ความสำคัญกับส่วน
เก็บข้อมูลเหล่านี้ ว่าถ้าเป็นไปได้ สามารถกำหนดให้ไม่อยู่ใน root ของเว็บไซต์ได้หรือไม่ เข้าใจง่ายดังนี้คือ
ปกติเราจะเอาไฟล์ต่างๆ ไว้ที่ root ไม่ว่าจะเป็น www หรือ public_html หรือ htdocs
สมมติเช่นโฟลเดอร์ uploads
mywebsite/public_html/uploads
แต่เพิ่มความปลอดภัยของข้อมูลให้เราย้ายออกมาไว้นอกโฟลเดอร์ public_html ก็จะเป็น
mywebsite/uploads
แบบนี้เป็นต้น ซึ่งจะไม่สามารถเข้าถึงจากภายนอกได้ง่าย ทำให้ข้อมูลมีความปลอดภัย
เช่นกันกับการขึ้นแจ้งเตือนข้างต้น แทนที่เราจะให้โฟลเดอร์ storage อยู่ใน
mywebsite/public_html/system/storage
ก็ให้ปรับมาอยู่ใน
mywebsite/storage
แทนแบบนี้เป็นต้น
อย่างไรก็ตามก็ไม่ใช่ว่าทุกๆ server จะสามารถกำหนดแบบนี้ได้ ขึ้นกับสิทธิ์การเข้าถึงของเว็บไซต์นั้นๆ ด้วย
ซึ่งถ้าหากเราสามารถกำหนดได้ ก็สามารถทำได้ดังนี้คือ
1. ให้ copy โฟลเดอร์ storage ทั้งหมดใน system/storage มาไว้นอก root ของเว็บไซต์
สมมติเช่นในตัวอย่างที่ทดสอบ ก็ย้าย่จาก
C:/xampp/htdocs/mysslweb/public/store/system/storage/
มาที่
C:/xampp/htdocs/mysslweb/storage/
2. แก้ไขไฟล์ config.php และ admin/config.php โดยเปลี่ยนบรรทัดดังนี้
จาก
define('DIR_STORAGE', DIR_SYSTEM . 'storage/');
เป็น
define('DIR_STORAGE', 'C:/xampp/htdocs/mysslweb/storage/');
หรือจะ คอมเม้นปิดไว้แบบนี้ก่อนก็ได้
#define('DIR_STORAGE', DIR_SYSTEM . 'storage/'); define('DIR_STORAGE', 'C:/xampp/htdocs/mysslweb/storage/');
3. จากนั้นเราก็ล็อกเอาท์ออกจากระบบแล้วเข้ามาใหม่ จะเห็นว่าไม่มีการแจ้งเตือนขึ้นมาแล้ว
เพราะเราได้ย้ายตำแหน่งสำหรับเก็บข้อมูลไปยังตำแหน่งที่ปลอดภัยแล้ว
การปิด Important Security Notification ด้วย Extension
อย่างที่กล่าวไปแล้ว ใช่ว่าทุกคนหรือ server นั้นจะสามารถกำหนดตำแหน่งตามวิธีข้างต้นได้
และตัวแจ้งเตือนก็จะขึ้นทุกครั้งในหน้า Dashboard หรือหน้าควบคุมหลัก เราสามารถปิดหรือลบตัว
แจ้งเตือนนี้ด้วยด้วยการติดตั้ง Extension ที่ชื่อว่า "Remove Important Security Notification"
ตัวที่ทดสอบใช้ได้กับ OpenCart 3.0.3.8 เป็น Extension ที่อัพเดทล่าสุด 11 Jan 2021
ให้เราทำการดาวน์โหลดมา จะได้เป็นไฟล zip ชื่อไฟล์ประมาณนี้
admin-remove-important-security-notification-3x.ocmod.zip
จากนั้นให้เราไปทำการติดตั้งผ่านหน้า admin โดยไปที่เมนู Extensions > Installer
ทำการติดตั้งโดยอัพโหลดไฟล์ข้างต้น ก็จะได้ดังนี้
เสร็จแล้วให้ไปที่เมนู Extensions > Modifications
แล้วกดปุ่ม รีเฟรส สีฟ้า มุมบนขวา
เท่านี้การแจ้งเตือนก็จะหายไปแล้ว และเราก็ยังสามารถใช้ส่วนของการเก็บข้อมูลที่ตำแหน่งเดิมได้
หรือก็คือใน โฟลเดอร์ system/storage และอาจจะใช้วิธีกำหนดการเข้าถึงด้วย .htaccess เพื่อป้องกัน
ในเบื้องต้นได้ ในกรณีที่เราไม่สามารถย้ายส่วนนี้ออกจาก root ได้