Sử dụng các phương pháp thoát khác nhau


8

Tôi nhận thấy lớp vendor/magento/framework/Escaper.phpcó chứa một vài phương thức bảo mật hữu ích được sử dụng bên trong các mẫu (chủ yếu). Một số trong số chúng khá phổ biến ( escapeHtml()), nhưng một số trong số chúng khó gặp.

  1. Phương pháp nào và escapeXssInUrl()thực sự làm gì?
  2. Trong trường hợp của phương pháp escapeJsQuote()- nơi mà các trích dẫn này có thể được tìm thấy là gì? Chỉ nội tuyến jstrong mẫu?
  3. Có ai có một số lời giải thích rõ ràng khi tất cả các phương pháp nên được sử dụng (ví dụ thực tế)?
  4. Sự khác biệt giữa escapeUrl()escapeXssInUrl()và nếu cái thứ hai cho chúng ta bảo mật tốt hơn, tại sao không luôn luôn sử dụng cái thứ hai thay vì chỉ thoát các ký tự html?
  5. escapeQuote()nên được sử dụng ví dụ để lặp lại một số biến trong tình huống như thế này <div value="<?php echo[ở đây?] $value?>"></div>?

Câu trả lời:


3

Hầu hết các chức năng cho các biện pháp bảo mật chống lại các cuộc tấn công XSS.

escapeXssInUrl()Phương pháp Remove javascript:, vbscript:, data:từ từ url và sử dụng như

echo $block->escapeXssInUrl($block->getUrl()) ?>"><?php echo $block->getAnchorTextHtml()

Magento 1 Bạn có thể thoát các trích dẫn trong javascript bằng $this->jsQuoteEscape ($item->getName());Mahento 2, bạn có thể làm tương tự bằng cách sử dụngescapeJsQuote

escapeUrl() thực sự tận dụng htmlspecialchars với các tham số được đề xuất để thoát HTML: $result = htmlspecialchars($result, ENT_COMPAT, 'UTF-8', false);

Bạn có thể tìm thêm thông tin bằng tài liệu chính thức của Magento 2 .


Bạn có thể cho biết sự khác biệt giữa escapeUrl()escapeXssInUr()l? Điều đáng chú ý làThe upcoming release of Magento 2.2 will deprecate these functions. Please check back on this page after the 2.2 release for updated documentation on new escape functions.
Bartosz Kubicki

3

Có một mục hữu ích trong DevDocs về bảo mật mẫu: Các biện pháp bảo mật chống lại các cuộc tấn công XSS

Re escapeXssInUrl: Hàm escapeUrlgọi escapeXssInUrlnội bộ cộng với escapeHtmlsau đó. Ngoài ra Magento sử dụng escapeUrlnội bộ.

Đảm bảo kiểm tra các chức năng thoát mới sau khi Magento 2.2. sẽ ra vì sẽ có những cái mới sắp tới:

Bản phát hành sắp tới của Magento 2.2 sẽ không dùng các chức năng này.

Vui lòng kiểm tra lại trên trang này sau khi phát hành 2.2 để biết tài liệu cập nhật về các chức năng thoát mới.

Và bạn cũng có thể quan tâm để xem bài trình bày của tôi về vấn đề này tại đây: Xử lý đầu vào và đầu ra an toàn - Gặp gỡ Magento Romania 2016


thực sự tôi đã xem khóa đào tạo của bạn về Mage Titans Italy và tôi muốn làm rõ một số thông tin và đó là một trong những lý do của câu hỏi :)! youtube.com/watch?v=TBSr5Esb-8M Đó là những gì tôi đã nhận thấy Đó là những gì tôi cũng nhận thấy escapeXssInUrl()- vậy tôi có nên sử dụng escapeUrl()insted không? 'Quy tắc xác thực Eav Backedn' - Tôi đoán chúng chỉ được sử dụng tự động và tôi đã sử dụng chúng? Hoặc nên thực hiện chúng ở những nơi đầu vào ar thêm vào?
Bartosz Kubicki

1
Tôi nghĩ rằng nó tốt hơn để sử dụng escapeUrlhơn escapeXssInUrlvì nó được gọi là nội bộ: github.com/magento/magento2/blob/ mẹo
Anna Völkl

Tôi đã không nhận thấy rằng - đó là đúng!
Bartosz Kubicki
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.