Hành động công khai trong bộ điều khiển quản trị


11

Tôi đã phát hiện ra rằng trong lớp \Magento\Backend\App\AbstractAction(tổ tiên của mọi hành động của trình điều khiển quản trị viên) có một thành viên được gọi _publicActionslà được sử dụng để xác thực khóa bí mật như thế này:

 if (is_array($this->_publicActions) && in_array($this->getRequest()->getActionName(), $this->_publicActions)) {
     return true;
 }

Điều này có nghĩa là, nếu một tên hành động nhất định được liệt kê trong _publicActionsbạn có thể truy cập hành động mà không cần khóa bí mật trong url.
Đây là một điều may mắn cho sự phát triển và gỡ lỗi, bởi vì bạn chỉ có thể làm điều đó một ROOT/admin/module/controller/actioncách thủ công mà không cần biết khóa quản trị bí mật, nhưng điều tôi không hiểu là tại sao tôi có thể truy cập trang chỉnh sửa sản phẩm mà không cần khóa bí mật.
Chỉ cần gọi bất kỳ trang chỉnh sửa sản phẩm như thế này ROOT/admin/catalog/product/edit/id/{product_id_here}.

Thành publicActionsviên được ghi đè cho các đơn đặt hàng (cho phép chỉ mục và chế độ xem), trong các sản phẩm (để chỉnh sửa) và trong bộ điều khiển chuyển hướng cho các chuyển hướng.

Bây giờ câu hỏi của tôi:
Tại sao chỉ một số hành động chỉnh sửa được phép mà không có khóa bí mật và khi nào / tôi nên cho phép điều gì trong các mô-đun CRUD tùy chỉnh của mình mà không có khóa bí mật?

Câu trả lời:


3

Tôi chưa bao giờ thấy câu trả lời chính thức từ một kỹ sư Magento về vấn đề này, nhưng với tôi, nó luôn xuất hiện rằng tính năng này sẽ được sử dụng khi bạn muốn người dùng có thể liên kết đến một trang từ bên ngoài phiên an toàn, nếu không thì nhấp vào một liên kết tham chiếu URL quản trị viên an toàn sẽ chỉ chuyển hướng bạn đến bảng điều khiển sau khi nhắc bạn đăng nhập.

Tôi luôn có hai tình huống: Bạn muốn người dùng có thể chia sẻ một số trang quản trị nhất định với những người dùng khác hoặc bạn muốn một số trang công khai tham chiếu URL tùy chỉnh của bạn trong back-end Magento (nếu không sẽ chỉ chuyển hướng đến bảng điều khiển) .

Khi bạn nhìn vào lõi Magento, bạn có thể thấy rằng Magento về cơ bản đã triển khai việc này để đánh giá, đặt hàng và trang sản phẩm. Tôi cho rằng các kỹ sư Magento đã làm điều này để người dùng quản trị của một cửa hàng có thể gửi liên kết trực tiếp qua tin nhắn hoặc email (như trong "Này, hãy kiểm tra thứ tự này: [url] ."). Tôi đã từng triển khai một tính năng như thế này cho một trang khi tôi muốn người dùng quản trị có thể chia sẻ dễ dàng.

Về cơ bản, bạn đang giao dịch tăng nguy cơ tấn công CSRF để có thể tự do liên kết trực tiếp đến một trang trong back-end quản trị viên của bạn, điều này chỉ nên được thực hiện khi bạn có một trường hợp sử dụng rất chắc chắn. Tôi cho rằng Trang CMS không rơi vào trường hợp sử dụng cho nhóm nòng cốt Magento vì dường như họ đã giới hạn "tính năng" này đối với các hành động liên quan đến hỗ trợ khách hàng và chỉnh sửa sản phẩm - về cơ bản là các nhiệm vụ phổ biến nhất đối với đại diện dịch vụ khách hàng cửa hàng.


Điều này thật ý nghĩa. +1 Nếu tôi không nghe thấy câu trả lời chính thức (khác với câu trả lời này) từ một thành viên trong nhóm trong 24 giờ tới, dấu kiểm là của bạn.
Marius

0

Nếu tôi phải đoán, tôi sẽ nói đó là vì khóa bí mật có thể được sử dụng như một phần của bảo vệ CSRF và / hoặc XSS được tích hợp trong Magento. Vì vậy, đối với các trang không sửa đổi nội dung của nó dựa trên đầu vào của người dùng, có thể không cần phải có khóa bí mật ở đó.

Nói một cách khác, chỉ những hành động nhận dữ liệu / đầu vào do người dùng cung cấp mới được bảo vệ bằng một khóa bí mật. Chỉ là một phỏng đoán.


nếu đó là sự thật thì việc chỉnh sửa trang CMS cũng phải "công khai". Vì vậy, nên chỉnh sửa một khách hàng hoặc một quy tắc thuế.
Marius

Đó là một điểm công bằng; và phản ứng của TiEul có ý nghĩa. Tôi đã bị đâm trong bóng tối, có vẻ như tôi đã bỏ lỡ.
Brett
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.