
قابلیت Secrets API در وردپرس 7.2 چیست؟ راهکاری جدید برای ذخیره امن کلیدهای API
یکی از موضوعاتی که توسعهدهندگان افزونههای وردپرس همیشه با آن سروکار دارند، نگهداری اطلاعات محرمانه است. اطلاعاتی مانند کلیدهای API، رمزهای دسترسی سرویسهای خارجی و اطلاعات احراز هویت نباید بدون محافظت مناسب در سایت ذخیره شوند.
برای مثال، فرض کنید یک افزونه وردپرسی به سرویس هوش مصنوعی، درگاه پرداخت یا یک سرویس ارسال پیامک متصل است. این افزونه برای ارتباط با سرویس موردنظر به یک کلید اختصاصی نیاز دارد. حالا سؤال مهم این است: این اطلاعات حساس کجا و چگونه ذخیره میشوند؟
وردپرس در نسخه 7.2 قرار است قابلیت جدیدی با نام Secrets API ارائه کند؛ قابلیتی که با هدف مدیریت و ذخیره رمزنگاریشده اطلاعات محرمانه طراحی شده است.
این قابلیت در یادداشت توسعهدهندگان وردپرس در تاریخ ۱۱ نوامبر ۲۰۲۶ معرفی شده و میتواند روش مدیریت اعتبارنامهها در افزونهها و پروژههای وردپرسی را تغییر دهد.
در این مقاله از پاور ورد، به زبان ساده بررسی میکنیم Secrets API چیست، چگونه کار میکند، چه تفاوتی با ذخیره اطلاعات در جدول Options دارد و توسعهدهندگان چه نکاتی را باید درباره آن بدانند.
Secrets API در وردپرس 7.2 چیست؟
Secrets API یک رابط برنامهنویسی جدید در هسته وردپرس است که برای ذخیره و مدیریت اطلاعات محرمانه مانند API Key و OAuth Client Secret طراحی شده است.
در روشهای سنتی، بسیاری از افزونهها اطلاعات حساس را در جدول Options پایگاه داده وردپرس ذخیره میکنند. این روش همیشه به معنای رمزنگاریشده بودن اطلاعات نیست.
Secrets API تلاش میکند این مشکل را با ذخیره رمزنگاریشده اطلاعات محرمانه برطرف کند.
طبق مستندات رسمی توسعهدهندگان وردپرس، این قابلیت از رمزنگاری مبتنی بر Libsodium و الگوریتم XChaCha20-Poly1305 استفاده میکند.
یکی دیگر از ویژگیهای مهم آن نگهداری یک نسخه قبلی از اطلاعات محرمانه است تا هنگام تغییر یا چرخش اعتبارنامهها، امکان استفاده از نسخه قبلی در شرایط لازم وجود داشته باشد.
نکته مهم: در تاریخ نگارش این مقاله، WordPress 7.2 هنوز نسخه نهایی نیست و Secrets API در مرحله توسعه نسخه 7.2 معرفی شده است. بنابراین نباید آن را قابلیتی دانست که هماکنون روی تمام سایتهای وردپرسی فعال است.
چرا وردپرس به Secrets API نیاز دارد؟
برای درک اهمیت این قابلیت، بهتر است یک مثال ساده را بررسی کنیم.
فرض کنید یک افزونه وردپرسی برای اتصال به یک سرویس خارجی از API Key استفاده میکند.
در روش معمول، توسعهدهنده ممکن است این کلید را با استفاده از تابع update_option() در پایگاه داده ذخیره کند.
مشکل اینجاست که اطلاعات ذخیرهشده در Options لزوماً رمزنگاری نمیشوند. بنابراین اگر اطلاعات حساس بدون محافظت مناسب ذخیره شوند، ممکن است در صورت دسترسی غیرمجاز به پایگاه داده یا فایلهای پشتیبان، در معرض افشا قرار بگیرند.
Secrets API برای حل همین مسئله طراحی شده است.
مهمترین اهداف این قابلیت عبارتاند از:
- ذخیره رمزنگاریشده اطلاعات محرمانه
- مدیریت بهتر کلیدهای API
- پشتیبانی از نسخه قبلی اعتبارنامهها
- فراهم کردن توابع استاندارد برای توسعهدهندگان
- امکان بررسی وضعیت اطلاعات محرمانه از طریق Site Health
- فراهم کردن امکان استفاده از ذخیرهسازهای اختصاصی در زیرساختهای پیشرفته
به این ترتیب، توسعهدهندگان میتوانند بهجای طراحی سیستم ذخیرهسازی اختصاصی برای هر افزونه، از یک API استاندارد در هسته وردپرس استفاده کنند.
قابلیتهای اصلی Secrets API در وردپرس
Secrets API فقط یک روش ساده برای ذخیره اطلاعات نیست. این سیستم چند قابلیت مختلف برای مدیریت اعتبارنامهها در اختیار توسعهدهندگان قرار میدهد.
۱. ذخیره اطلاعات محرمانه با wp_set_secret()
تابع wp_set_secret() برای ذخیره یک مقدار محرمانه استفاده میشود.
برای مثال، یک افزونه میتواند اطلاعات مربوط به کلید API خود را با نام مشخصی در Secrets API ثبت کند.
نمونه کد:
$result = wp_set_secret(
'my-plugin/api-key',
$api_key
);
if ( is_wp_error( $result ) ) {
// ذخیره اطلاعات با خطا مواجه شده است.
}
در این مثال، نام Secret با پیشوند نام افزونه مشخص شده است.
استفاده از پیشوند اختصاصی کمک میکند اطلاعات افزونههای مختلف با یکدیگر تداخل نداشته باشند.
۲. خواندن اطلاعات با wp_get_secret()
برای دریافت اطلاعات محرمانه ذخیرهشده، تابع wp_get_secret() در نظر گرفته شده است.
نمونه:
$secret = wp_get_secret(
'my-plugin/api-key'
);
if ( $secret instanceof WP_Secret ) {
$api_key = $secret->reveal();
}
در این روش، مقدار اصلی اطلاعات فقط از طریق متد reveal() در دسترس قرار میگیرد.
نکته مهم این است که اگر اطلاعات ذخیره نشده باشند، تابع مقدار null برمیگرداند؛ اما اگر اطلاعات وجود داشته باشند و به هر دلیل قابل خواندن نباشند، ممکن است یک WP_Error دریافت شود.
این دو وضعیت نباید با یکدیگر اشتباه گرفته شوند.
۳. حذف اطلاعات با wp_delete_secret()
گاهی لازم است یک کلید API یا اطلاعات محرمانه دیگر از سایت حذف شود.
برای این کار تابع زیر در نظر گرفته شده است:
wp_delete_secret(
'my-plugin/api-key'
);
این تابع به توسعهدهندگان اجازه میدهد اطلاعاتی را که دیگر به آنها نیاز ندارند حذف کنند.
۴. مشاهده فهرست اطلاعات محرمانه با wp_list_secrets()
یکی دیگر از توابع این API، تابع wp_list_secrets() است.
این تابع برای مشاهده نام و اطلاعات توصیفی Secretهای ذخیرهشده استفاده میشود؛ اما مقدار واقعی اطلاعات محرمانه را نمایش نمیدهد.
این موضوع برای مدیریت بهتر اطلاعات بدون افشای مقدار آنها اهمیت دارد.
۵. نگهداری نسخه قبلی اطلاعات
یکی از ویژگیهای کاربردی Secrets API، پشتیبانی از نسخه قبلی اعتبارنامهها است.
فرض کنید یک سرویس خارجی کلید API شما را تغییر داده است. در چنین شرایطی، ممکن است لازم باشد برای مدتی نسخه قبلی نیز در دسترس باشد تا فرایند جایگزینی اعتبارنامه بدون اختلال انجام شود.
Secrets API برای این سناریو سازوکار نگهداری نسخه قبلی را فراهم میکند.
پس از پایان فرایند تغییر، توسعهدهنده میتواند نسخه قبلی را با تابع wp_retire_secret_version() بازنشسته کند.
اطلاعات محرمانه در وردپرس چگونه رمزنگاری میشوند؟
یکی از بخشهای فنی و مهم Secrets API، روش رمزنگاری اطلاعات است.
طبق مستندات رسمی، این سیستم از الگوریتم XChaCha20-Poly1305 در Libsodium استفاده میکند.
اطلاعات محرمانه به شکل رمزنگاریشده ذخیره میشوند و کلیدهای موردنیاز برای رمزنگاری از یک کلید ریشه تصادفی مشتق میشوند.
کلید ریشه نیز با استفاده از مقداری به نام WP_SECRETS_KEY محافظت میشود.
این مقدار باید در فایل wp-config.php تعریف شود.
نمونه ساختار آن:
define(
'WP_SECRETS_KEY',
'YOUR_GENERATED_RANDOM_KEY'
);
مقدار بالا فقط یک نمونه نمایشی است و نباید بهعنوان کلید واقعی استفاده شود.
برای نصبهای جدید، فرایند نصب وردپرس این کلید را ایجاد میکند. در سایتهای قدیمیتر، ممکن است لازم باشد مدیر سایت آن را از طریق راهنمای نمایشدادهشده در Site Health تنظیم کند.
هشدار مهم: پس از ذخیره اطلاعات محرمانه، نباید بدون طی کردن فرایند صحیح، مقدار WP_SECRETS_KEY را تغییر دهید یا حذف کنید. چنین کاری میتواند باعث شود اطلاعات قبلی دیگر قابل رمزگشایی نباشند.
Secrets API چه تفاوتی با ذخیره اطلاعات در جدول wp_options دارد؟
یکی از سؤالهای مهم توسعهدهندگان این است که چرا باید بهجای روش قدیمی ذخیره اطلاعات، از Secrets API استفاده کرد؟
برای پاسخ بهتر، تفاوت این دو روش را بررسی کنیم.
| ویژگی | ذخیره معمولی در Options | Secrets API |
|---|---|---|
| ذخیره اطلاعات | در پایگاه داده | در ذخیرهساز Secrets |
| رمزنگاری اختصاصی | بهصورت پیشفرض تضمین نمیشود | رمزنگاریشده |
| مدیریت نسخه قبلی | نیازمند پیادهسازی اختصاصی | پشتیبانی داخلی |
| مدیریت اطلاعات محرمانه | وابسته به کدنویسی افزونه | API استاندارد |
| بررسی وضعیت | نیازمند ابزار اختصاصی | پشتیبانی از Site Health |
بنابراین Secrets API میتواند راهکار مناسبتری برای اطلاعات محرمانه باشد؛ البته همه دادههای تنظیماتی افزونهها محرمانه نیستند و نیازی نیست تمام Optionsها به این سیستم منتقل شوند.
Secrets API در Site Health وردپرس چه امکاناتی دارد؟
یکی از بخشهای جالب این قابلیت، ارتباط آن با ابزار Site Health است.
وردپرس قرار است اطلاعاتی درباره وضعیت Secrets API در بخش سلامت سایت نمایش دهد.
بر اساس مستندات رسمی، سه بررسی امنیتی مهم برای این قابلیت در نظر گرفته شده است:
بررسی وضعیت کلید رمزنگاری
وردپرس میتواند وضعیت WP_SECRETS_KEY را بررسی کند.
اگر کلید وجود نداشته باشد یا قابل استفاده نباشد، وضعیت بهصورت هشدار نمایش داده میشود.
اگر کلید نتواند اطلاعات ریشه ذخیرهشده را رمزگشایی کند، مشکل میتواند در سطح بحرانی گزارش شود.
بررسی اطلاعات غیرقابل رمزگشایی
اگر یکی از Secretهای ذخیرهشده قابل رمزگشایی نباشد، Site Health میتواند این موضوع را به مدیر سایت اطلاع دهد.
بررسی اعتبارنامههای نیازمند تغییر
برخی اطلاعات محرمانه ممکن است به دلیل انتقال از روش قدیمی نیازمند چرخش یا تعویض باشند.
Site Health میتواند این وضعیت را نیز گزارش کند.
این امکانات به مدیران سایت کمک میکنند مشکلات مربوط به مدیریت اطلاعات محرمانه را راحتتر شناسایی کنند.
آیا Secrets API امنیت سایت وردپرسی را بهطور کامل تضمین میکند؟
خیر. این نکته بسیار مهم است.
Secrets API برای محافظت بهتر از اطلاعات محرمانه در زمان ذخیرهسازی طراحی شده است؛ اما به معنی امنیت کامل سایت نیست.
برای مثال، اگر یک افزونه مخرب یا کد غیرمجاز روی سایت اجرا شود، ممکن است بتواند به اطلاعاتی که از طریق API قابل خواندن هستند دسترسی پیدا کند.
مستندات وردپرس نیز تأکید میکنند که نامگذاری اختصاصی Secretها به معنی ایجاد کنترل دسترسی نیست؛ زیرا کدهای در حال اجرای سایت میتوانند به اطلاعات ذخیرهشده دسترسی داشته باشند.
بنابراین برای محافظت از سایت همچنان باید اقدامات امنیتی دیگری را انجام دهید:
- افزونهها و قالبها را از منابع معتبر تهیه کنید.
- وردپرس را به نسخههای امن و پشتیبانیشده ارتقا دهید.
- دسترسی کاربران را محدود کنید.
- از اطلاعات سایت نسخه پشتیبان تهیه کنید.
- کلیدهای API را در اختیار افراد غیرمجاز قرار ندهید.
- از اجرای کدهای ناشناس در سایت جلوگیری کنید.
Secrets API یک لایه محافظتی مفید است، نه جایگزین تمام اصول امنیتی وردپرس.
آیا کاربران عادی وردپرس باید کاری انجام دهند؟
اگر فقط از وردپرس برای مدیریت محتوا، انتشار مقاله یا راهاندازی فروشگاه استفاده میکنید، احتمالاً نیازی نیست مستقیماً با کدنویسی Secrets API کار کنید.
این قابلیت بیشتر برای توسعهدهندگان افزونهها، قالبها و سرویسهای متصل به وردپرس اهمیت دارد.
با این حال، اگر از افزونههایی استفاده میکنید که به سرویسهای خارجی متصل میشوند، در آینده میتوانید بررسی کنید آیا توسعهدهنده آنها از Secrets API برای نگهداری اطلاعات محرمانه استفاده کرده است یا خیر.
برای کاربران عادی، مهمترین کار این است که وردپرس و افزونههای خود را بهروز نگه دارند و اطلاعات حساس را در محلهای ناامن ذخیره نکنند.
زمان انتشار Secrets API در وردپرس 7.2
قابلیت Secrets API در یادداشت رسمی توسعهدهندگان وردپرس در تاریخ ۱۱ نوامبر ۲۰۲۶ معرفی شده است.
در همین زمان، وردپرس 7.2 در مرحله انتشار نسخههای آزمایشی قرار دارد.
بر اساس برنامه رسمی انتشار، نسخه نهایی WordPress 7.2 برای ۸ دسامبر ۲۰۲۶ برنامهریزی شده است.
توجه داشته باشید که نسخههای Beta برای آزمایش و بررسی هستند و نباید روی سایتهای اصلی و مهم نصب شوند.
اگر توسعهدهنده هستید، بهتر است قابلیتهای جدید را در محیط آزمایشی بررسی کنید و پیش از استفاده در پروژه واقعی، مستندات نهایی را مطالعه کنید.
جمعبندی؛ آیا Secrets API آینده مدیریت اطلاعات محرمانه در وردپرس است؟
Secrets API یکی از تغییرات فنی مهمی است که برای وردپرس 7.2 معرفی شده است.
این قابلیت با فراهم کردن امکان ذخیره رمزنگاریشده کلیدهای API و اطلاعات احراز هویت، میتواند مدیریت اطلاعات حساس را برای توسعهدهندگان استانداردتر و سادهتر کند.
پشتیبانی از نسخه قبلی اعتبارنامهها، توابع اختصاصی برای ذخیره و بازیابی اطلاعات و ارتباط با Site Health از ویژگیهای مهم آن هستند.
البته این سیستم بهتنهایی امنیت کامل سایت را تضمین نمیکند و توسعهدهندگان همچنان باید کنترل دسترسی، اعتبارسنجی ورودیها و اصول امنیتی را رعایت کنند.
اگر با توسعه افزونههای وردپرس سروکار دارید، Secrets API یکی از قابلیتهایی است که ارزش دارد پیش از انتشار نسخه نهایی وردپرس 7.2 با آن آشنا شوید.
سؤالات متداول درباره Secrets API وردپرس
Secrets API در وردپرس چیست؟
یک رابط برنامهنویسی برای ذخیره و مدیریت رمزنگاریشده اطلاعات محرمانه مانند کلیدهای API و اطلاعات احراز هویت است.
Secrets API در کدام نسخه وردپرس معرفی میشود؟
این قابلیت برای WordPress 7.2 معرفی شده است.
آیا Secrets API اطلاعات را رمزنگاری میکند؟
بله. طبق مستندات رسمی از Libsodium و الگوریتم XChaCha20-Poly1305 برای رمزنگاری اطلاعات استفاده میکند.
آیا کاربران عادی باید Secrets API را فعال کنند؟
کاربران عادی معمولاً نیازی به استفاده مستقیم از توابع این API ندارند. استفاده از آن بیشتر به توسعهدهندگان افزونهها و قالبها مربوط میشود.
آیا Secrets API جایگزین جدول wp_options میشود؟
خیر. این API برای اطلاعات محرمانه طراحی شده است و قرار نیست تمام تنظیمات معمولی وردپرس را جایگزین کند.
آیا تغییر WP_SECRETS_KEY خطرناک است؟
اگر اطلاعات محرمانه قبلاً ذخیره شده باشند، تغییر یا حذف این کلید بدون انجام فرایند صحیح میتواند باعث غیرقابلخواندن شدن اطلاعات شود.
آیا Secrets API امنیت کامل سایت را تضمین میکند؟
خیر. این قابلیت فقط به محافظت از اطلاعات محرمانه در زمان ذخیرهسازی کمک میکند و جایگزین سایر اقدامات امنیتی نیست.