2010-08-05 24 views
5

Các đặc quyền chmod chuẩn là "644" đối với các tệp và "755" đối với các thư mục, phải không?Đặc quyền chmod an toàn?

Trong hầu hết các trường hợp, PHP không cần ghi vào tệp hoặc thư mục. Vì vậy, tôi không thể lấy đặc quyền viết từ tất cả các nhóm?

Tôi có thể gán "444" cho tất cả các tệp và "555" cho tất cả các thư mục.

Điều đó sẽ không an toàn hơn?

Cảm ơn trước!

Lưu ý: chmod() có trong danh sách disable_functions của PHP.

+1

Tôi khuyên bạn nên thay đổi thứ tự từ. Như nó được viết, có vẻ như _Không phải là an toàn hơn? _ Được hỏi về câu được viết ngay trước câu hỏi đó. – kiamlaluno

+0

Cảm ơn, tôi đã thay đổi thứ tự. – caw

Trả lời

3

Quyền mặc định cho tệp và thư mục mới được tạo được đặt bởi biến môi trường umask. Chủ sở hữu và gốc của tệp có thể thay đổi quyền.

Nếu bạn không cần sử dụng chmod trong ứng dụng của mình, hãy để nó trong danh sách vô hiệu hóa. Họ theo cách bạn nên nhìn vào an ninh là: Nhiều người thông minh hơn tôi bây giờ đã làm cho chmod một trong những phần an toàn hơn của ứng dụng của tôi. Do đó, tôi sẽ dành thời gian có sẵn để đảm bảo các bộ phận khác an toàn.

Làm cho ứng dụng của bạn chỉ đọc, trên máy chủ, là ok để làm nếu bạn tự động hóa nó. Khi bạn thực hiện thay đổi mã ứng dụng của bạn, nó sẽ làm cho mọi thứ rất khó khăn cho bạn mặc dù. Tại một số điểm, bạn sẽ đi qua lại, thực hiện một số thay đổi mã và kiểm tra chúng trên máy chủ ... và sau đó quên đặt lại quyền truy cập tệp/thư mục của bạn về chỉ đọc.

Nếu bạn chỉ có 1 tài khoản người dùng trên máy sản xuất của mình, tôi sẽ chỉ gắn với quyền mặc định - mọi thứ có thể được quản lý cho bạn. Hoặc bạn có thể xóa nhóm và quyền "khác", như được mô tả bên dưới.

Thiết lập sản xuất điển hình, sẽ có nhóm ứng dụng mà bạn thuộc về. Bạn cũng muốn có một người dùng riêng để chạy ứng dụng php của bạn. Giữ quyền đầy đủ cho chủ sở hữu và nhóm và xóa tất cả quyền từ "người khác".Bằng cách này:

  • Nhà phát triển giữ thông tin đăng nhập riêng của họ - bạn có thể theo dõi ai đã làm gì khi nào.
  • Bạn và các nhà phát triển khác có thể sao chép mã mới vào máy chủ.
  • Ứng dụng có thể chạy mã.
  • Ứng dụng không thể truy cập bất kỳ thứ gì ngoài mã.
  • Không người dùng nào khác có thể xem mã của bạn.

Tôi đoán đó là công việc của người khác để quản lý máy chủ sản xuất của bạn? Họ sẽ dành nhiều thời gian để đảm bảo không ai có thể đăng nhập và poke xung quanh. Trong khi bạn cần đảm bảo không ai có thể chạy các lệnh hệ điều hành, tôi nghĩ nơi tốt nhất để bắt đầu là tìm hiểu về xss. Cài đặt máy chủ php mặc định phải ổn. Phần ít an toàn nhất của ứng dụng, là phần duy nhất bạn đã thấy. Nếu ai đó sẽ truy cập vào cuộc gọi hệ thống, có nhiều khả năng là thông qua biểu mẫu. Ngay cả khi bạn loại bỏ các cuộc gọi hệ thống, các biểu mẫu vẫn dễ bị lưu trữ javascript. Trừ khi bạn đang lưu trữ thẻ tín dụng trong ứng dụng của mình, mục tiêu có nhiều khả năng sẽ là mật khẩu/phiên trong trình duyệt của người dùng của bạn.

+0

Cảm ơn bạn đã trả lời chi tiết này. Bạn nói đúng, người khác đang chăm sóc máy chủ của tôi. Nhưng tôi hỏi câu hỏi này vì ai đó đã quản lý để tải lên một tệp từ xa vào thư mục gốc của tôi và anh ta chèn mã độc vào một số tệp khác bằng cách gọi tập lệnh từ xa này. Nếu bạn làm cho các thư mục và các tập tin không sử dụng được, điều này sẽ không xảy ra lần nữa, đúng không? – caw

+1

Thật không may, điều gì đó có thể xảy ra lần nữa. Bạn sẽ đóng một chức năng nhỏ, nhưng không ngăn chặn truy cập. Một nơi nào đó trên trang web, có quyền truy cập để làm _something_. Tạo một tập tin trong thư mục gốc của bạn là tiếp tục xuống ngăn xếp chương trình. Bạn cần phải loại bỏ khoảng cách trên nó. Nếu bạn chưa thể xác định được đó là gì, việc thay đổi quyền truy cập tệp của bạn có thể giúp bạn trong thời gian ngắn. Nó có thể ngăn không cho ai đó tự động hóa việc hack chính xác này. Nó sẽ bốc mùi để sửa chữa trang web của bạn, chỉ để có một giám sát bot và làm lại nó. Đây sẽ là thời điểm tốt để thêm nhiều hơn vào disabled_functions (ty SirDarius) –

1

Nó không an toàn hơn vì PHP luôn có thể thực hiện chmod 777 ngay cả trên các tệp 000-chmoded (nếu chúng được sở hữu bởi PHP). Tuy nhiên, nó an toàn hơn vì bạn không thể ghi tệp này mà không cần mã hóa chúng trước đây.

+0

Nhưng nếu chmod() nằm trong danh sách disable_functions của PHP, nó rất an toàn, đúng không? – caw

+0

Có lẽ. Tôi không biết PHP đủ để biết nếu điều này hoạt động. – Scharron

+0

Thông thường nếu chmod bị tắt, bạn có thể thay đổi quyền. Kiểm tra xem chức năng umask đã được bật chưa. Whit chức năng này bạn có thể thay đổi quyền truy cập tiêu chuẩn của một tập tin !!! – VeeWee

0

chmod() có trong danh sách disable_functions của PHP.
Điều đó sẽ không an toàn hơn?

Sử dụng disable_functions có thể tắt các chức năng cụ thể.
Nếu chmod() xuất hiện trong chỉ thị disable_functions, nó không an toàn hơn để sử dụng; nó chỉ đơn giản là vô hiệu hóa, và mã PHP đang sử dụng chmod() sẽ tăng một cảnh báo.

Chỉ thị disable_functions không được nhầm lẫn với chỉ thị Safe Mode. disable_functions hoạt động ngay cả khi chỉ thị safe_mode được đặt thành 0; khi safe_mode được bật, some functions bị tắt hoặc bị hạn chế.

Để thông báo rằng Chế độ an toàn được coi là không được chấp nhận, trong PHP 5.3; điều này có nghĩa là chỉ thị vẫn được chấp nhận trong PHP 5.3, nhưng nó có thể không được sử dụng nữa vào bất kỳ lúc nào.

+0

Đây là một câu trả lời tuyệt vời, nhưng đối với câu hỏi sai, phải không? : P –

+0

OP nói rằng 'chmod()' được liệt kê trong chỉ thị 'disable_functions', và anh ta hỏi _Would đó có an toàn hơn không? _ Tôi trả lời điều đó. – kiamlaluno

+0

Trong một bình luận, OP cũng hỏi _But nếu chmod() nằm trong danh sách disable_functions của PHP, nó rất an toàn, phải không? _ – kiamlaluno

1

Xin lỗi vì tiếng anh của tôi.

Tôi đang nghĩ đến ba lý do có thể.

  1. Kiểm tra safe_mod cờ trong php.ini của bạn, nếu safe_mod là ON bạn có thể nhận được một số vấn đề với chức năng đó.
  2. Nếu bạn có plesk, bạn gặp sự cố nếu bạn tạo thư mục hoặc tệp với người dùng khác chưa được tạo bằng plesk.
  3. Có thể bạn đang thiếu thư viện php.