Những hàm WP nào bạn cần sử dụng esc_html () hoặc esc_url () trên?


7

Tôi đã gặp các tình huống mà mọi người đã sử dụng esc_html()hoặc esc_url()với một số chức năng WP nhất định như home_url('/'). Một ví dụ nằm trong thẻ neo mở của <a>liên kết trở lại trang chủ như thế này:

<a href="<?php echo esc_url( home_url( '/' ) ); ?>"> 

Làm thế nào để bạn biết các chức năng WP cần phải được thoát và nó có quan trọng nếu bạn sử dụng esc_html()hoặc esc_url()?

Bất kỳ lời khuyên hoặc hướng dẫn sẽ là tuyệt vời.

Câu trả lời:


10

Bất kỳ dữ liệu trả về.

  • Nếu một chức năng xuất ra bên trong, thì nó có trách nhiệm thoát ra
  • nếu một hàm trả về dữ liệu để sử dụng, nó sẽ không bị hủy để tránh thoát hai lần, đó là trách nhiệm của bạn

Điều này là do bạn luôn luôn thoát muộn để không có nghi ngờ nếu một biến được thoát.

Nếu đầu ra của các API như home_urlđã thoát trước, thì điều này sẽ không còn đúng nữa. Nó cũng sẽ giới thiệu thoát kép, có thể được sử dụng để vượt qua thoát trong một số tình huống.

Một số lưu ý thêm:

  • đừng bận tâm để thoát khỏi chuỗi tĩnh, thật vô nghĩa
  • đừng cố gắng bọc các chức năng như the_permalinktrong esc_urlvv, các chức năng thoát vẫn là các chức năng, chúng không phải là công cụ sửa đổi / tô sáng ma thuật bảo PHP bảo mật một cái gì đó.
  • Không trả lại các đoạn HTML phức tạp trong các biến, trả về dữ liệu, dữ liệu không cần phải thoát, nhưng thoát khỏi một đoạn HTML phức tạp là không dễ dàng và thường không thể thực hiện một cách an toàn
  • Khi sử dụng shortcodes / bộ lọc, hãy đảm bảo thoát các bit bạn thêm / sửa đổi, nhưng để phần còn lại một mình và tin tưởng rằng nó đã được thoát, bạn không có trách nhiệm thoát đầu ra được tạo ra ở nơi khác trong những tình huống này. Có nói rằng, đừng tin tưởng nó như là một đầu vào nếu nó được sử dụng để hướng dẫn mã của riêng bạn

3

Bất kỳ đầu ra của dữ liệu không đáng tin cậy (bao gồm cả dữ liệu từ cơ sở dữ liệu) phải được vệ sinh. Codex WordPress mô tả các chức năng có sẵn: https://codex.wordpress.org/Data_Validation

Trình thám thính mã, tuân theo Tiêu chuẩn mã hóa WordPress , yêu cầu vệ sinh đầu ra ngay cả từ các chức năng cốt lõi của WordPress. Bạn có thể bật mã sniffer như vậy trong PhpStorm chẳng hạn.

Đôi khi một yêu cầu như vậy là quá mức, nhưng tốt hơn là tuân theo các tiêu chuẩn mã hóa để có mã đáng tin cậy hơn.

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.