• Thông Tin Cần Biết
  • Hướng Dẫn
  • Câu Hỏi Thường Gặp
  • Thông Tin Cần Biết
  • Hướng Dẫn
  • Câu Hỏi Thường Gặp
Home/Hướng Dẫn/Web Hosting/Vì sao phải hạn chế thực thi một số hàm PHP trên máy chủ Hosting?

Vì sao phải hạn chế thực thi một số hàm PHP trên máy chủ Hosting?

145 lượt xem 0

Ngôn ngữ lập trình PHP cung cấp một thư viện hàm phong phú, cho phép lập trình viên thực hiện nhiều tác vụ khác nhau, bao gồm cả việc truy cập và điều khiển hệ thống máy chủ. Tuy nhiên, một số hàm PHP có thể được sử dụng để thực hiện các hành động độc hại, chẳng hạn như:

  • Phát tán mã độc: Các hàm như exec(), system(), shell_exec(), passthru() cho phép lập trình viên thực thi các lệnh shell trên máy chủ. Điều này có thể được sử dụng để tải xuống và cài đặt mã độc trên máy chủ.
  • Trộm cắp dữ liệu: Các hàm như file_get_contents(), file_put_contents(), fopen() cho phép lập trình viên truy cập và đọc/ghi dữ liệu trên máy chủ. Điều này có thể được sử dụng để lấy cắp thông tin nhạy cảm, chẳng hạn như mật khẩu, thông tin thẻ tín dụng, v.v.
  • Phá hoại hệ thống: Các hàm như chmod(), chown(), symlink() cho phép lập trình viên thay đổi quyền truy cập của các tệp và thư mục trên máy chủ. Điều này có thể được sử dụng để chiếm quyền kiểm soát máy chủ.

Để ngăn chặn các mối đe dọa bảo mật này, hầu hết các nhà cung cấp dịch vụ lưu trữ Hosting đều ngăn chặn thực thi một số hàm PHP trên máy chủ của họ. Các hàm thường bị chặn bao gồm:

* exec()
* system()
* shell_exec()
* passthru()
* file_get_contents()
* file_put_contents()
* fopen()
* chmod()
* chown()
* symlink()

Ngoài ra, một số nhà cung cấp dịch vụ Hosting cũng có thể chặn thực thi các hàm PHP khác, tùy thuộc vào chính sách bảo mật của họ.

Việc ngăn chặn thực thi một số hàm PHP có thể ảnh hưởng đến khả năng hoạt động của một số ứng dụng web. Tuy nhiên, đây là một biện pháp bảo mật quan trọng cần được thực hiện để bảo vệ máy chủ Hosting khỏi các mối đe dọa bảo mật.

Dưới đây là một số mẹo để giảm thiểu tác động của việc ngăn chặn thực thi các hàm PHP:

  • Sử dụng các hàm PHP thay thế an toàn hơn. Ví dụ: thay vì sử dụng exec(), system(), shell_exec() hoặc passthru(), bạn có thể sử dụng hàm exec_safe() hoặc system_safe().
  • Kiểm tra mã PHP của bạn để đảm bảo rằng bạn không sử dụng các hàm PHP bị chặn.
  • Nếu bạn cần sử dụng các hàm PHP bị chặn, hãy liên hệ với nhà cung cấp dịch vụ Hosting của bạn để được hỗ trợ.

Để hiểu rõ vấn đề và nguyên nhân tại sao họ lại ngăn chặn các hàm này, những hàm nào buộc phải ngăn chặn thực thi, bạn xem mô tả trong bảng sau nhé:

STT Name Tính năng Mô tả
1 system Thực hiện một chương trình bên ngoài và hiển thị đầu ra System () giống như phiên bản C của hàm trong đó nó thực thi lệnh đã cho và đưa ra kết quả. Cuộc gọi system () cũng cố gắng tự động xóa bộ đệm đầu ra của máy chủ web sau mỗi dòng đầu ra nếu PHP đang chạy như một mô-đun máy chủ. Nếu bạn cần thực thi một lệnh và có tất cả dữ liệu từ lệnh được truyền trực tiếp trở lại mà không có bất kỳ sự can thiệp nào, hãy sử dụng hàm passthru ().
2 exec Thực hiện một chương trình bên ngoài Cho phép thực hiện 1 chương trình từ bên ngoài. Dễ bị lợi dụng để thao tác chiếm quyền, thực thi các chương trình độc hại.
3 shell_exec Thực thi lệnh thông qua shell và trả về đầu ra hoàn chỉnh dưới dạng chuỗi Thực thi lệnh bằng command và trả kết quả là chuỗi. Tương tự như exce, dễ bị lợi dụng và khai thác nhầm mục đích xấu.
4 proc_close Đóng một quy trình được mở bởi Proc_open () và trả lại mã thoát của quy trình đó Proc_close () tương tự như pclose () ngoại trừ việc nó chỉ hoạt động trên các quy trình được mở bởi Proc_open (). Proc_close () chờ quá trình kết thúc và trả về mã thoát của nó. Nếu bạn có các đường ống mở cho quy trình đó, bạn nên dùng fclose() để đóng chúng trước khi gọi hàm này để tránh nghẽn – quá trình con có thể không thể thoát trong khi các đường ống đang mở.
5 proc_get_status Nhận thông tin về một quy trình được mở bởi Proc_open () Proc_get_status () tìm nạp dữ liệu về một quy trình được mở bằng cách sử dụng Proc_open ().
6 proc_nice Thay đổi mức độ ưu tiên của quy trình hiện tại Thay đổi mức độ ưu tiên của quy trình hiện tại. Điều này sẽ gây ra vấn đề leo thang tài nguyên.
7 popen Mở con trỏ tệp quá trình popen tương tự với proc_open nhưng được sử dụng ít hơn.
8 proc_terminate Đóng một tiến trình được mở bởi Proc_open Tín hiệu một quá trình (được tạo bằng cách sử dụng Proc_open ()) mà nó sẽ chấm dứt. Proc_terminate () trả về ngay lập tức và không chờ quá trình kết thúc. Proc_terminate () cho phép bạn chấm dứt quá trình và tiếp tục với các nhiệm vụ khác. Bạn có thể thăm dò quá trình (để xem nó đã dừng chưa) bằng cách sử dụng hàm Proc_get_status ().

Điều này dễ gây ra việc các tiến trình quan trọng đang thực hiện nhưng lại bị ngắt bởi function này. Gây ảnh hưởng khá nghiêm trọng, cũng như gây ra các vấn đề liên quan đến bảo mật dữ liệu.

9 escapeshellcmd Thoát shell metacharacters escapeshellcmd () thoát bất kỳ ký tự nào trong chuỗi có thể được sử dụng để lừa lệnh shell để thực thi các lệnh tùy ý. Hàm này nên được sử dụng để đảm bảo rằng mọi dữ liệu đến từ đầu vào của người dùng đều được thoát trước khi dữ liệu này được chuyển đến các hàm exec () hoặc system () hoặc cho toán tử backtick. Các ký tự sau được bắt đầu bằng dấu gạch chéo ngược: & #; `| *? ~ <> ^ () [] {} $ , X0A và xFF. ‘và “chỉ được thoát nếu chúng không được ghép nối. Trong Windows, tất cả các ký tự này cộng với% và! được thay thế bằng khoảng trắng thay thế.
10 escapeshellcmd Thoát một chuỗi được sử dụng làm đối số shell escapeshellarg () thêm các trích dẫn đơn xung quanh một chuỗi và trích dẫn / thoát khỏi mọi trích dẫn đơn hiện có cho phép bạn chuyển một chuỗi trực tiếp đến hàm shell và để nó được coi là một đối số an toàn duy nhất. Hàm này nên được sử dụng để thoát các đối số riêng lẻ sang các hàm shell đến từ đầu vào của người dùng. Các hàm shell bao gồm exec (), system () và toán tử backtick. Trên Windows, escapeshellarg () thay thế thay thế các dấu phần trăm, dấu chấm than (thay thế biến bị trì hoãn) và dấu ngoặc kép bằng dấu cách và thêm dấu ngoặc kép quanh chuỗi.
11 dl  Tải một phần mở rộng PHP khi chạy Tải phần mở rộng PHP được cung cấp bởi thư viện tham số. Sử dụng extension_loaded () để kiểm tra xem một tiện ích mở rộng đã có sẵn hay chưa. Điều này hoạt động trên cả các tiện ích mở rộng tích hợp và các tiện ích được tải động (thông qua php.ini hoặc dl ()).
12 show_source Trả về một tệp có cú pháp PHP được tô sáng. Cú pháp được tô sáng bằng cách sử dụng các thẻ HTML. In ra hoặc trả về một phiên bản được tô sáng bằng cú pháp của mã có trong tên tệp bằng cách sử dụng các màu được xác định trong công cụ tô sáng cú pháp tích hợp cho PHP. Nhiều máy chủ được cấu hình để tự động làm nổi bật các tệp có phần mở rộng phps. Ví dụ: example.phps khi xem sẽ hiển thị cú pháp tô sáng nguồn của tệp
13 ini_alter Hàm này là bí danh của: ini_set () Đặt giá trị của tùy chọn cấu hình đã cho. Tùy chọn cấu hình sẽ giữ giá trị mới này trong quá trình thực thi tập lệnh và sẽ được khôi phục ở cuối tập lệnh.
14 virtual Thực hiện một yêu cầu phụ của Apache Thực hiện một yêu cầu phụ của Apache
15 openlog Mở một kết nối đến bộ ghi hệ thống cho một chương trình Mở một kết nối đến bộ ghi hệ thống cho một chương trình
16 mail Gửi mail không cần chứng thực Gửi mail không cần chứng thực
17 symlink Tạo  symbolic link Tạo  symbolic link

Bảng bên trên liệt kê những hàm PHP đã bị vô hiệu hoá (disable functions). Vậy, những hàm nào và những modules nào của PHP/ Apache được hỗ trợ. Bảng sau đây sẽ liệt kê chi tiết:

STT Apache Module PHP Extention
1 config libc-client
2 config-runtime pear
3 devel php-bcmath
4 mod-alt-passenger php-bz2
5 mod_bwlimited php-calendar
6 mod_cache php-cli
7 mod_cgid php-common
8 mod_charset_lite php-curl
9 mod_deflate php-dba
10 mod_env php-devel
11 mod_evasive php-enchant
12 mod_expires php-exif
13 mod_file_cache php-fileinfo
14 mod_headers php-fpm
15 mod_hostinglimits php-ftp
16 mod_http2 php-gd
17 mod_imagemap php-gettext
18 mod_lsapi php-gmp
19 mod_macro php-iconv
20 mod_mime_magic php-imap
21 mod_mpm_event php-intl
22 mod_proxy php-ioncube
23 mod_proxy_fcgi php-litespeed
24 mod_proxy_http php-mbstring
25 mod_proxy_wstunnel php-mcrypt
26 mod_remoteip php-mysqlnd
27 mod_reqtimeout php-odbc
28 mod_security2 php-pdo
29 mod_speling php-phalcon
30 mod_ssl php-posix
31 mod_substitute php-soap
32 mod_suexec php-sockets
33 mod_unique_id php-sourceguardian
34 mod_version php-suhosin
35 mod_vhost_alias php-tidy
36 Tools php-xml
37 php-zendguard
38 php-zip
39 runtime

Việc ngăn chặn thực thi một số hàm PHP không phải là giải pháp bảo mật duy nhất. Các nhà phát triển web cũng cần phải thực hiện các biện pháp bảo mật khác, chẳng hạn như:

  • Sử dụng mã nguồn an toàn
  • Xác thực người dùng
  • Cập nhật phần mềm thường xuyên

Việc thực hiện các biện pháp bảo mật này sẽ giúp giảm thiểu nguy cơ tấn công từ tin tặc.

Tags:phpbảo mật hosting

Bài viết này hữu ích không?

Yes  No
Bài viết liên quan
  • Hosting Managed vs Unmanaged: Sự khác biệt và lựa chọn phù hợp cho bạn
  • Hướng dẫn backup database trên hosting Plesk
  • Hướng dẫn tạo backup trên Plesk
  • Hướng dẫn thay đổi version asp.net trên Plesk
  • Quản lý tài khoản FTP trên Hosting Plesk
  • Kiểm tra dung lượng hosting trên DirectAdmin

Không tìm thấy câu trả lời của bạn? Liên hệ

Web Hosting
  • Vì sao phải hạn chế thực thi một số hàm PHP trên máy chủ Hosting?
  • Fix lỗi “Function ereg() is deprecated” cho PHP 5.3
  • Hướng dẫn cài đặt SSL trên DirectAdmin
  • Kích hoạt LiteSpeed Cache tăng tốc website
  • Kiểm tra dung lượng hosting trên Plesk
  • Kiểm tra dung lượng hosting trên DirectAdmin
  • Quản lý tài khoản FTP trên Hosting Plesk
  • Hướng dẫn thay đổi version asp.net trên Plesk
  • Hướng dẫn tạo backup trên Plesk
  • Hướng dẫn backup database trên hosting Plesk
  • Hosting Managed vs Unmanaged: Sự khác biệt và lựa chọn phù hợp cho bạn
All Categories
  • WordPress Website
  • Quản trị Website
  • Quản lý tài khoản
  • Tên miền
  • Chứng chỉ số SSL
  • Email Hosting Server
  • Web Hosting
  • VPS / Server
  • Plesk
  • DirectAdmin
  • Networking
  • Linux
  • Windows
© BizMaC | Rainbow E-Commerce