WordPress đang dọn dẹp một query_var tùy chỉnh để tránh tiêm sql?


7

Tôi đang sử dụng get_query_varchức năng để có được một tùy chỉnh query_var. Điều này query_varsẽ được sử dụng sau này để truy vấn các đối số để truy xuất các bài đăng với:

$the_query = new WP_Query( $args );

Câu hỏi của tôi là, có an toàn không nếu tôi sử dụng get_query_varnhư được cung cấp hoặc tôi cần làm sạch biến này để tránh tiêm sql?

Tôi đã đọc bài viết này , nhưng nó không hoàn toàn rõ ràng và nó cũng cũ.


1
Một var truy vấn công khai phải được coi là đầu vào của người dùng, vì vậy bạn nên vệ sinh và xác thực trước khi sử dụng. Đối WP_Querytượng sẽ làm cho các đối số an toàn cho các tương tác cơ sở dữ liệu, như ngăn chặn việc tiêm SQL, nhưng vẫn tốt khi bạn vệ sinh và xác thực dữ liệu đầu vào của người dùng so với giá trị bạn mong đợi.
cybmeta

1
Tôi đã tìm thấy cái này: codex.wordpress.org/Function_Reference/sanitize bản_field codex.wordpress.org/Function_Reference/ trộm Điều đó có thể giúp tôi vệ sinh dữ liệu đầu vào của người dùng. Cảm ơn bạn rất nhiều vì tất cả. Cảm ơn đặc biệt đến Pieter Goosen nhờ sự giúp đỡ của bạn với ngữ pháp của tôi.
Richzendy

Richzendy hoặc @cybmeta, bạn có thể viết ra giải pháp như một câu trả lời không?
Jen

vâng, ý tôi là - bạn có thể viết nó như một câu trả lời chứ không phải bình luận. :) Bạn nhận được nhiều điểm internet hơn cho điều đó.
Jen

Câu trả lời:


3

Trong một thế giới hoàn hảo, bạn không cần vệ sinh các truy vấn của mình vì WordPress ORM tránh việc tiêm sql vào cơ sở dữ liệu, nhưng cực kỳ khuyến khích để làm sạch dữ liệu đầu vào của bạn, đặc biệt nếu là dữ liệu đầu vào do khách truy cập cung cấp.

Ví dụ: bạn có thể sử dụng một cái gì đó như thế này:

$name = sanitize_text_field( $_POST['name'] );
// WP_Query arguments
$args = array (
    'name' => $name,
);

// The Query
$query = new WP_Query( $args );

Có rất nhiều chức năng lọc có thể khử trùng:

  • vệ sinh_email ()
  • sanitize_file_name ()
  • sanitize_html_group ()
  • sanitize_key ()
  • sanitize_meta ()
  • vệ sinh_mime_type ()
  • sanitize_option ()
  • sanitize_sql_orderby ()
  • sanitize bản_field ()
  • sanitize_title ()
  • sanitize_title_for_query ()
  • sanitize_title_with_dashes ()
  • sanitize_user ()

Để biết thêm thông tin đọc:

https://codex.wordpress.org/Validating_Sanitizing_and_Escaping_User_Data

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.