Tôi hiện đang cố tạo CMS bằng cách sử dụng PHP, hoàn toàn là vì lợi ích của giáo dục. Tôi muốn các quản trị viên có thể tạo nội dung, sẽ được phân tích cú pháp và lưu trên lưu trữ máy chủ ở dạng HTML thuần túy để tránh chi phí thực thi tập lệnh PHP sẽ phải chịu. Thật không may, tôi chỉ có thể nghĩ ra một vài cách để làm như vậy:Các tác động bảo mật của việc ghi tệp bằng cách sử dụng PHP
- Đặt quyền ghi trên mọi thư mục mà CMS muốn viết tệp. Điều này nghe có vẻ như một ý tưởng tồi.
- Đặt quyền ghi trên một thư mục
cached
duy nhất. Tập lệnh PHP sau đó có thểinclude
hoặcfopen/fread/echo
nội dung từ tệp trong thư mụccached
theo thời gian yêu cầu. Điều này có lẽ có thể được thực hiện trong một thời trang Mediawiki-esque: một cái gì đó nhưindex.php?page=xyz
có thể đọc và echo nội dung từcached/xyz.html
khi chạy. Tuy nhiên, tôi cần phải đảm bảo sự tỉnh táo của$_GET['page']
để ngăn các biến thể khó chịu nhưindex.php?page=http://www.bad-site.org/malicious-script.js
.
Cá nhân tôi không quá hồi hộp bởi ý tưởng thứ hai, nhưng ý tưởng đầu tiên nghe có vẻ rất không an toàn. Ai đó có thể xin đề nghị một cách tốt để làm điều này?
EDIT: Tôi không có lợi khi tìm nạp dữ liệu từ cơ sở dữ liệu. Thời gian duy nhất tôi muốn lấy dữ liệu từ cơ sở dữ liệu sẽ là khi nội dung được lưu trữ. Thứ hai, tôi không có quyền truy cập vào memcached hoặc bất kỳ máy gia tốc PHP nào.
+1 để đề cập đến quyền thực thi. Tuy nhiên, tôi không đồng ý với điểm đầu tiên của bạn - bạn có thể làm cho khả năng của trình soạn thảo bị hạn chế như bạn muốn (nói bằng cách loại bỏ javascript). Ngoài ra nó không chỉ là khách truy cập bạn cần phải bảo vệ, nhưng tính toàn vẹn của máy chủ của bạn. – CurtainDog
Tuyệt đối! Hạn chế mọi thứ có ý nghĩa, nhưng vào cuối ngày, người dùng vẫn có thể tạo một trang web có nội dung "Tôi là Jon Foo, anh trai của vị vua mới được tân trang của Nigeria, và tôi cần sự giúp đỡ của bạn để chuyển 42 triệu đô la đến Hoa Kỳ ... "Theo như bảo vệ máy chủ, chỉ cần đảm bảo bạn chỉ viết các tệp mà bạn được phép ghi tệp và không cho phép máy chủ web xử lý bất kỳ điều gì trong đó dưới dạng tập lệnh. Tôi không có ý định thực hiện bất kỳ âm thanh nào tầm thường - rất nhiều công việc cẩn thận được gọi - nhưng nó không vốn không an toàn, trong ước tính của tôi. – timdev
Những người dùng làm điều ác cho khách truy cập không phải là một vấn đề, tôi cho rằng, vì nội dung sẽ được thêm vào và lưu vào bộ nhớ cache bởi một nhóm người đáng tin cậy. Tôi đã tò mò nếu sự cho phép viết trên một thư mục công cộng có thể được sử dụng bởi một khách truy cập độc hại như là một lỗ hổng tiềm năng. Cảm ơn bạn đã chỉ ra phần thực thi! Tôi không thể thiết lập bộ nhớ cache vào lúc này vì ngân sách là vấn đề rất quan trọng và chúng tôi sẽ có kế hoạch lưu trữ cung cấp cho chúng tôi PHP/MySQL với băng thông hợp lý và ít hơn. – susmits