پنج اشتباه رایج در endpointهای سفارشی REST وردپرس

permission_callback خالی، ورودی اعتبارسنجی‌نشده و نشت داده؛ اشتباه‌هایی که در بررسی‌های فنی بارها دیده می‌شوند.

حمید اعراب توسعه‌دهنده ارشد بک‌اند وردپرس و ووکامرس
انتشار
زمان مطالعه
۱ دقیقه مطالعه

حمید اعراب ۱۲ خرداد ۱۴۰۵ ۱ دقیقه مطالعه

تصویر پیکسلی یک قفل جلوی یک endpoint
فهرست مطالب (5)

endpointهای سفارشی REST سریع ساخته می‌شوند و همین سرعت باعث می‌شود جزئیات امنیتی جا بماند. این پنج مورد در بررسی‌های فنی بیشتر از همه تکرار می‌شوند.

permission_callback همیشه true

register_rest_route( 'hamidarab/v1', '/orders/(?P<id>\d+)', [
    'methods'             => WP_REST_Server::READABLE,
    'callback'            => 'hamidarab_get_order',
    'permission_callback' => static fn ( $request ) => current_user_can( 'edit_shop_orders' ),
    'args'                => [
        'id' => [ 'validate_callback' => static fn ( $v ) => is_numeric( $v ) ],
    ],
] );

__return_true فقط برای داده‌ای مناسب است که واقعاً عمومی است.

ورودی بدون sanitize و validate

برای هر آرگومان validate_callback و sanitize_callback تعریف کنید تا داده قبل از رسیدن به منطق شما تمیز شده باشد.

برگرداندن کل آبجکت

پاسخ را صریحاً بسازید و فقط فیلدهای لازم را برگردانید؛ برگرداندن کل آبجکت سفارش یا کاربر راه نشت داده است.

نبود nonce در درخواست‌های مرورگر

درخواست‌هایی که با کوکی احراز هویت می‌شوند باید هدر X-WP-Nonce داشته باشند؛ وگرنه وردپرس آن‌ها را مهمان فرض می‌کند.

نبود محدودیت نرخ

endpointهای عمومی که کار سنگین انجام می‌دهند، بدون محدودیت نرخ یا کش، راهی آسان برای از کار انداختن سایت‌اند.

$ ./request_review

همین مشکل را در فروشگاه خودتان دارید؟

توسعه‌دهنده ارشد WordPress و WooCommerce برای معماری، اتصال سیستم‌ها و حل مسائل پیچیده production.

درخواست بررسی فنی

دیدگاه‌ها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *