การกระทำสาธารณะในตัวควบคุมผู้ดูแลระบบ


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 ผู้ดูแลระบบที่ปลอดภัยจะนำคุณไปยังแผงควบคุมหลังจากแจ้งให้คุณเข้าสู่ระบบ

ฉันมีสองสถานการณ์เสมอ: คุณต้องการให้ผู้ใช้สามารถแบ่งปันหน้าผู้ดูแลระบบบางหน้ากับผู้ใช้คนอื่นหรือคุณต้องการให้หน้าสาธารณะอ้างอิง URL ที่กำหนดเองของคุณใน Magento back-end (ซึ่งจะเปลี่ยนเส้นทางไปยังแดชบอร์ดเท่านั้น) .

เมื่อคุณดูแกนหลักของวีโอไอพีคุณจะเห็นได้ว่าวีโอไอพีได้นำสิ่งนี้ไปใช้ในการตรวจสอบคำสั่งซื้อและหน้าผลิตภัณฑ์ ฉันคิดว่าวิศวกรของ Magento ทำสิ่งนี้เพื่อให้ผู้ดูแลระบบของร้านค้าสามารถส่งลิงก์โดยตรงผ่านผู้ส่งสารหรืออีเมล (เช่นใน "เฮ้ลองดูคำสั่งนี้: [url] ") ฉันเคยใช้คุณสมบัติเช่นนี้สำหรับหน้าหนึ่งเมื่อฉันต้องการให้ผู้ใช้ที่ดูแลระบบสามารถแชร์ได้อย่างง่ายดาย

คุณกำลังทำการค้าขายความเสี่ยงที่เพิ่มขึ้นของการโจมตี CSRF เพื่ออิสระในการเชื่อมโยงไปยังเพจใน back-end ผู้ดูแลระบบของคุณโดยตรงซึ่งควรกระทำเมื่อคุณมีกรณีการใช้งานที่แน่นอน ฉันคิดว่าหน้า CMS ไม่ได้ตกอยู่ในกรณีใช้งานของทีมงานหลักของ Magento เนื่องจากพวกเขาดูเหมือนจะ จำกัด "ฟีเจอร์" นี้ต่อการกระทำที่เกี่ยวข้องกับการสนับสนุนลูกค้าและการแก้ไขผลิตภัณฑ์ - โดยทั่วไปแล้วเป็นงานที่พบบ่อยที่สุดสำหรับตัวแทนฝ่ายบริการลูกค้า ร้านค้า


มันสมเหตุสมผลแล้ว +1 หากฉันไม่ได้ยินคำตอบอย่างเป็นทางการ (แตกต่างจากคำตอบนี้) จากสมาชิกทีมใน 24 ชั่วโมงถัดไปเครื่องหมายถูกนั้นเป็นของคุณ
Marius

0

ถ้าฉันต้องเดาฉันจะบอกว่าเป็นเพราะอาจใช้รหัสลับเป็นส่วนหนึ่งของการป้องกัน CSRF และ / หรือ XSS ใน Magento ดังนั้นสำหรับหน้าเว็บที่ไม่ได้แก้ไขเนื้อหาตามการป้อนข้อมูลของผู้ใช้อาจไม่จำเป็นต้องมีรหัสลับที่นั่น

กล่าวอีกวิธีหนึ่งการกระทำที่ได้รับการปกป้องข้อมูล / อินพุตของผู้ใช้จะได้รับการป้องกันด้วยรหัสลับ เพียงแค่เดา


หากเป็นจริงการแก้ไขหน้า CMS ควรเป็น "สาธารณะ" ด้วย ดังนั้นควรแก้ไขลูกค้าหรือกฎภาษี
Marius

นั่นเป็นประเด็นที่ยุติธรรม และการตอบสนองของ TiEul นั้นสมเหตุสมผล ฉันถูกแทงในความมืดดูเหมือนว่าฉันจะพลาด
Brett
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.