Sự khác nhau giữa các PHP Handler DSO, CGI, SuPHP, FastCGI

Tác giả Network Engineer, T.Một 06, 2020, 11:07:04 SÁNG

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Sự khác nhau giữa các PHP Handler DSO, CGI, SuPHP, FastCGI


1. PHP handler là gì?.

Khi chạy một Website PHP, máy chủ phải cần thông dịch PHP và tạo ra trang Web khi người dùng truy cập vào. Tùy vào từng người dùng, thời gian, địa điểm mà Webiste có thể được tạo ra khác nhau. Mã PHP được phiên dịch dựa vào bộ thư viện PHP như PHP4 PHP5. PHP hHandler sẽ điều khiển quá trình những gì được tải lên từ bộ thư viện PHP.

Có nhiều PHP Handler hiện nay được sử dụng như DSO, CGI, SuPHP, FastCGI. Mỗi PHP Handler có những tác động đến hiệu suất của máy chủ Web Apache khác nhau, bởi vì nó xác định máy chủ Web Apache sẽ dùng PHP như thế nào.

Có một vấn đề quan trọng là tùy thuộc vào tình hình cấu hình máy chủ, CPU, RAM, nhu cầu, mục đích mà chúng ta sẽ chọn PHP Handler thích hợp. Không có PHP Handler nào là hoàn toàn và tốt hơn cái nào. Vì vậy các bạn phải lựa chọn cho phù hợp.

Hiện tại thì FastCGI đang được dùng khá phổ biến trên thế giới. Sau đây mình sẽ đề cập tổng quan về tất cả các PHP Handler và so sánh hiệu năng của các PHP handler này.


2. Danh sách các PHP Handler.

2.1 DSO.

Nó được biết đến như là mod_php. Mặc dù được xem như là một phiên bản cấu hình cũ nhưng mặc nhiên nó là PHP Handler nhanh nhất. Nó chạy PHP như một module của Web Server Apache. Điều đó có nghĩa là các PHP Script sẽ chạy dưới quyền của Apache User. Đó là user 'nobody'.

DSO có 2 điểm yếu:

  • Tất cả các tâp tin được tạo ra từ PHP Script sẽ được sở hữu bởi user 'nobody'. Chúng không có khả năng đọc được từ Web. Điều này khá phổ biến với người dùng WordPress. Nếu họ dùng tính năng tải tập tin lên thông qua giao diện WordPress hoặc dùng tính năng tự động cập nhật thì sẽ bị lỗi với DSO.
  • Về vấn đề bảo mật. Việc tạo tập tin sẽ dưới danh nghĩa người dùng 'nobody'. Nếu một hacker tìm được một lổ hổng trong PHP Script, họ sẽ có thể thực thi một tập tin cùng một quyền hạn như những tập tin hệ thống mà được đánh dấu sở hữu là 'nobody'. Điều này làm hacker có khả năng chỉnh sửa các tập tin hệ thống khác. Để chống lại điều này thì chúng ta phải thường xuyên cập nhật PHP lên các phiên bản mới nhất có thể.

2.2 CGI.

CGI handler sẽ chạy PHP Script như một CGI Module. Nó vẫn chạy tiến trình PHP dưới danh nghĩa của user 'nobody'. CGI được xem như là một hình thức dự phòng khi DSO không có hiệu lực. Phương pháp này không nhanh và cũng không an toàn, dù cho SuExec có được bật hay không.

2.3 SuPHP.

SuPHP cũng chạy PHP như CGI Module. Nó khác với CGI là khi PHP Scripts được gọi từ Web Server sẽ được chạy dưới quyền của user sở hữu PHP Scripts đó. suPHP thông thường là một handler mặc định và được khuyến cáo bởi cPanel để chạy PHP bởi vì các bạn sẽ có thể thấy user nào đang chạy đoạn PHP Script nào.

SuPHP có một điểm lợi là khi bạn sử dụng công cụ tải tập tin lên Website của bạn, các tập tin này sẽ được phân đúng quyền hạn của user đó. Tải tập tin lên và một vài tính năng khác của WordPress sẽ không hoạt động nếu không sử dụng suPHP hoặc FastCGI.

SuPHP cũng cung cấp một lợi thế bảo mật tốt hơn là DSO hay CGI. Tất cả những PHP Scripts không thuộc một user cụ thể nào đó thì sẽ không thể nào thực thi được hoặc user này sẽ không thể nào thực thi được các PHP Scripts của user khác. Điều này có nghĩa là khi một tài khoản nào đó bị đánh cắp, các PHP Scripts cũng không thể nào lây lan sang các tài khoản khác được.

Điểm yếu của suPHP là sử dụng CPU cao. Thêm vào đó, bạn không thể sử dụng Opcode Cache như xCache với suPHP. Khi sử dụng suPHP nếu CPU tải quá cao thì các bạn cũng có thể chuyển lại dùng DSO hoặc FastCGI.

2.4 FastCGI.

FastCGI là một giải pháp thay thế có hiệu suất cao hơn thay cho CGI. Nó giống như suPHP ở chỗ sẽ chạy PHP Script dưới quyền sở hữu PHP Scripts đó. Điểm khác là FastCGI sẽ chạy ít tốn tài nguyên CPU hơn và đạt tốc độ gần bằng DSO. FastCGI sử dụng được Opcode Cacher như eAccelerator để tải Website nhanh hơn.

Điểm yếu của FastCGI là sử dụng RAM khá nhiều. Nếu các bạn muốn có tốc độ nhanh và bảo mật tốt và ít tốn CPU thì có thể xem xét sử dụng FastCGI.
Nếu các bạn có ý kiến gì hay hơn thì hãy đừng quên chia sẻ qua bình luận bên dưới.