관리자 컨트롤러의 공개 작업


12

클래스 \Magento\Backend\App\AbstractAction(모든 관리자 컨트롤러 작업의 조상)에는 _publicActions다음과 같이 비밀 키의 유효성 검사에 사용되는 멤버 가 있음을 발견했습니다 .

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

이는 특정 조치 이름이 나열된 _publicActions경우 URL의 비밀 키없이 조치에 액세스 할 수 있음을 의미합니다. 비밀 관리 키를 알 필요없이 수동으로
수행 할 수 있기 때문에 개발 및 디버깅에 대한 축복입니다 ROOT/admin/module/controller/action. 그러나 이해하지 못하는 것은 비밀 키없이 제품 편집 페이지에 액세스 할 수있는 이유입니다.
이와 같은 제품 편집 페이지를 호출하면 ROOT/admin/catalog/product/edit/id/{product_id_here}됩니다.

publicActions멤버는 제품 (편집 용) 및 리디렉션에 대한 리디렉션 컨트롤러 (인덱스 볼 수 있도록) 주문 덮어 씁니다.

이제 내 질문 :
비밀 키없이 일부 편집 작업 만 허용되는 이유는 무엇이며 비밀 키가없는 사용자 정의 CRUD 모듈에서 언제 / 무엇을 허용해야합니까?

답변:


4

이 문제에 대해 Magento 엔지니어의 공식 답변을 본 적이 없지만 사용자가 보안 세션 외부에서 페이지에 링크 할 수 있기를 원할 때이 기능이 항상 사용되는 것으로 나타났습니다. 보안 관리 URL을 참조하는 링크는 로그인하라는 메시지를 표시 한 후에 만 ​​대시 보드로 리디렉션합니다.

항상 두 가지 시나리오를 염두에 두었습니다. 사용자가 특정 관리자 페이지를 다른 사용자와 공유 할 수 있도록하거나 일부 공개 페이지가 Magento 백엔드의 사용자 지정 URL을 참조하도록하려는 경우 (대시 보드로만 리디렉션 됨) .

Magento 코어를 살펴보면 Magento가 기본적으로 리뷰, 주문 및 제품 페이지에이 기능을 구현했음을 알 수 있습니다. Magento 엔지니어가이 작업을 수행하여 상점의 관리자가 메신저 나 이메일을 통해 직접 링크를 보낼 수 있다고 가정합니다 ( "이봐,이 순서를 확인하십시오 : [url] "). 한 번은 관리자가 쉽게 공유 할 수 있도록 페이지에 이와 같은 기능을 구현했습니다.

기본적으로 관리자 백엔드의 페이지에 직접 연결할 수있는 자유를 위해 CSRF 공격의 위험이 증가합니다. 이는 매우 특정한 사용 사례를 염두에 두어야합니다. CMS 페이지가이 "기능"을 고객 지원 및 제품 편집과 관련된 작업 (기본적으로 많은 고객 서비스 담당자에게 가장 일반적인 작업)으로 제한 한 것처럼 보였으므로 Magento 핵심 팀의 사용 사례에 포함되지 않았다고 생각합니다. 백화점.


이것은 말이됩니다. +1 다음 24 시간 내에 팀원으로부터 공식 답변 (이 답변과 다른 답변)이 들리지 않으면 확인 표시가 나타납니다.
Marius

0

추측해야 할 경우 비밀 키가 Magento에 내장 된 CSRF 및 / 또는 XSS 보호의 일부로 사용될 수 있기 때문입니다. 따라서 사용자 입력에 따라 내용을 수정하지 않는 페이지의 경우 비밀 키가 필요하지 않을 수 있습니다.

다른 방법으로, 사용자 제공 데이터 / 입력을받는 작업 만 비밀 키로 보호됩니다. 그냥 추측.


이것이 사실이라면 CMS 페이지 편집도 "공개"여야합니다. 따라서 고객 또는 세금 규칙을 수정해야합니다.
Marius

그것은 좋은 지적입니다. TiEul의 반응은 의미가 있습니다. 나는 어둠 속에서 찌르고 있었다, 내가 놓친 것처럼 보인다.
Brett
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.