Xem xét việc thiết lập open_basedir
trên cơ sở "mỗi trang web". open_basedir
là một cài đặt php.ini sẽ ngăn các tập lệnh của bạn truy cập các tệp bên ngoài danh sách trắng được xác định. Nếu máy chủ của bạn lưu trữ một số trang web, nó sẽ ngăn một trang web đọc cài đặt cơ sở dữ liệu từ một trang web khác. Nó cũng sẽ ngăn tập lệnh php truy cập / sửa đổi các tệp hệ thống lõi. Openir rất dễ thiết lập, chỉ cần thêm dòng " php_admin_value open_basedir /my/list/of/folders:/as/a/colon/seperated/list
" vào mỗi vhost Apache.
Ngoài ra, hãy xem xét tắt công cụ tập lệnh PHP cho tất cả các trang web / thư mục không chứa tập lệnh PHP (ví dụ: thư mục hình ảnh được tải lên). Một lần nữa, điều này rất đơn giản, hãy thêm "php_admin_value engine off" vào bất kỳ Virtualhost nào của Apache không cần php. Để vô hiệu hóa PHP trong một thư mục, hãy đặt điều tương tự vào thẻ Thư mục.
Chạy các quyền của tệp càng chặt chẽ càng tốt, tránh truy cập ghi vào các tập lệnh PHP cho người dùng Apache, điều này ngăn một tập lệnh đang chạy tự sửa đổi hoặc các tập lệnh khác trên cùng một trang / máy chủ. Tránh các quyền 777 nếu có thể, hãy tìm ra các quyền tối thiểu cần thiết để chạy ứng dụng và sử dụng các quyền đó.
Nếu bạn đang lưu trữ nhiều trang web, mỗi trang có cơ sở dữ liệu riêng, hãy sử dụng một người dùng MySQL / Postgres riêng biệt cho từng trang và đặt quyền cho mỗi người dùng để họ chỉ có quyền truy cập vào cơ sở dữ liệu có liên quan. Một lần nữa, điều này sẽ ngăn một tập lệnh giả mạo làm xáo trộn cơ sở dữ liệu của ứng dụng khác.
Suosin, HardenedPHP, mod_security và những thứ tương tự đều có giá trị, nhưng sử dụng chúng ngoài cấu hình được khóa chặt, thay vì.