Tại sao lại phải cấm hàm exec trong PHP

Ba thứ quan trọng nhất đối với một website là: host, database và domain.

Bạn cứ thử tưởng tượng, một ngày trở gió, server của bạn bị hỏng ổ cứng và không thể khôi phục lại dữ liệu. Như vậy, dữ liệu quý giá trong database và trên host tan tành mây khói. Mất database thì trang web còn lại chả có ý nghĩa gì.

Còn domain là cách cần thiết ngoài việc dễ nhớ thì còn chống việc dò tìm mật khẩu của database của những người dùng cùng hệ thống.

Chúng ta quay ngược lại vấn đề: Tại sao lại phải cấm hàm exec trong PHP? Nếu chúng ta đặt ngược vấn đề là: Nếu cho phép hàm exec trong PHP hoạt động thì sao?

Vậy thì sẽ thế này…

Khi một hacker bằng một cách nào đó chiếm được mật khẩu admin của trang web (ví dụ: Joomla). Sau đó, người này có thể xóa một phần dữ liệu của trang web. Nhưng đó chỉ là một việc làm dại dột. Bởi thông thường một hacker họ nghĩ là họ cần phải thâm nhập vào database của website, sau đó copy về máy của mình, rồi xóa toàn bộ thông tin trong máy chủ. Sau đó đòi tiền chuộc từ phía nạn nhân.

Và họ sẽ dùng quyền admin của Joomla đó để upload 1 module viết bằng PHP. Sau đó, họ là www-data. Họ dùng 2 lệnh sau:

– pwd để tìm đường dẫn đến thư mục hiện hành của website
– cat để show toàn bộ thông tin mật khẩu của database.

OK, giờ họ toàn quyền vào phpmyadmin để copy và xóa bỏ toàn bộ thông tin của database.

Chính vì vậy, hầu hết mọi website đều bị cấm quyền exec cho file PHP.

Giải pháp cho admin của website:

– Trong trường hợp bạn không phải là root, và website của bạn lại được phép thực thi lệnh exec cho file PHP thì bạn phải cấm quyền w các thư mục và tệp tin nhằm chống việc upload file PHP trái phép.

– Mỗi khi sử dụng quyền 777 để cài đặt một module thì phải hủy quyền này ngay lập tức. Nên để quyền là: rwx—–x cho thư mục.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: