توضیحات
افزونه Two‑Factor با الزام کاربران به ارائه یک روش دوم تأیید هویت علاوه بر گذرواژه، یک لایه امنیتی اضافی به ورود وردپرس اضافه میکند. این کار حتی در صورت افشای گذرواژهها نیز از دسترسی غیرمجاز جلوگیری میکند.
دستورالعملهای راهاندازی
مهم: هر کاربر باید تنظیمات تأیید هویت دومرحلهای خود را بهصورت جداگانه پیکربندی کند.
برای کاربران
- رفتن به نمایه خود: در مدیریت وردپرس به «کاربران نمایه شما» بروید
- یافتن گزینههای تأیید دومرحلهای: به پایین صفحه رفته و بخش «گزینههای تأیید دومرحلهای» را پیدا کنید
- انتخاب روشها: یک یا چند ارائهدهنده تأیید هویت را فعال کنید (توجه داشته باشید مدیر سایت ممکن است برخی از آنها را پنهان کرده باشد، بنابراین گزینههای دردسترس ممکن است متفاوت باشند):
- برنامه تأییدکننده (TOTP) — استفاده از برنامههایی مانند Google Authenticator، Authy یا 1Password
- کدهای ایمیل — دریافت کدهای یکبارمصرف از طریق ایمیل
- کدهای پشتیبان — ایجاد کدهای یکبارمصرف پشتیبان برای شرایط اضطراری
- روش آزمایشی (Dummy) — فقط برای اهداف آزمایشی (نیازمند WP_DEBUG)
- پیکربندی هر روش: دستورالعملهای راهاندازی را برای هر ارائهدهنده فعال دنبال کنید
- تنظیم روش اصلی: انتخاب کنید کدام روش بهعنوان تأیید هویت پیشفرض استفاده شود
- ذخیره تغییرات: برای ذخیره تنظیمات روی «بهروزرسانی نمایه» کلیک نمایید
برای مدیران سایت
- تنظیمات افزونه: این افزونه صفحهای در «تنظیمات Two‑Factor» فراهم میکند تا مشخص کنید کدام ارائهدهندهها در کل سایت غیرفعال شوند.
- مدیریت کاربر: مدیران میتوانند با ویرایش نمایه کاربران، تأیید هویت دومرحلهای را برای آنها پیکربندی کنند
- پیشنهادهای امنیتی: کاربران را تشویق کنید روشهای پشتیبان را فعال کنند تا از قفل شدن حساب جلوگیری شود
روشهای تأیید هویت دردسترس
برنامه تأییدکننده (TOTP) — پیشنهادی
- امنیت: بالا — گذرواژههای یکبارمصرف مبتنی بر زمان
- راهاندازی: کد QR را با برنامه تأییدکننده اسکن کنید
- سازگاری: با Google Authenticator، Authy، 1Password و سایر برنامههای TOTP کار میکند
- بهترین برای: بیشتر کاربران؛ امنیت عالی همراه با کاربری آسان فراهم میکند
کدهای پشتیبان — پیشنهادی
- امنیت: متوسط — کدهای یکبارمصرف
- راهاندازی: ایجاد ۱۰ کد پشتیبان برای دسترسی اضطراری
- سازگاری: در همهجا کار میکند و به سختافزار ویژهای نیاز ندارد
- بهترین برای: دسترسی اضطراری زمانی که روشهای دیگر دردسترس نیستند
کدهای ایمیل
- امنیت: متوسط — کدهای یکبارمصرف از طریق ایمیل ارسال میشوند
- راهاندازی: خودکار — از آدرس ایمیل وردپرس شما استفاده میکند
- سازگاری: با هر دستگاهی که قابلیت ایمیل داشته باشد کار میکند
- بهترین برای: کاربرانی که تأیید هویت مبتنی بر ایمیل را ترجیح میدهند
کلیدهای امنیتی FIDO U2F
- به دلیل از دست رفتن پشتیبانی مرورگر منسوخ و حذف شده است.
روش آزمایشی (Dummy)
- امنیت: هیچکدام — همیشه موفق میشود
- راهاندازی: فقط زمانی دردسترس است که WP_DEBUG فعال باشد
- هدف: فقط برای آزمایش و توسعه
- بهترین برای: توسعهدهندگانی که افزونه را آزمایش میکنند
نکات مهم
نیازمندی HTTPS
- همه روشها روی سایتهای HTTP و HTTPS کار میکنند
سازگاری مرورگر
- روشهای TOTP و ایمیل در همه دستگاهها و مرورگرها کار میکنند
بازیابی حساب
- همیشه کدهای پشتیبان را فعال کنید تا از قفل شدن حساب خود جلوگیری نمایید
- اگر دسترسی به همه روشهای تأیید هویت را از دست دادید با مدیر سایت تماس بگیرید
بهترین شیوههای امنیتی
- در صورت امکان از چندین روش تأیید هویت استفاده کنید
- کدهای پشتیبان را در مکانی امن نگهداری کنید
- تنظیمات تأیید هویت خود را بهطور منظم بررسی و بهروزرسانی کنید
برای اطلاعات بیشتر درباره تأیید هویت دومرحلهای در وردپرس، راهنمای امنیت مدیریت پیشرفته وردپرس را ببینید.
برای اطلاعات بیشتر ، به پست مراجعه کنید..
اقدامات & فیلترها
در اینجا لیستی از قلابهای عملکرد و فیلتر ارائه شده توسط افزونه آورده شده است:
- فیلتر
two_factor_providersارائه دهندگان دو مرحلهای موجود مانند ایمیل و گذرواژههای یکبار مصرف مبتنی بر زمان را لغو می کند. مقادیر آرایه نام کلاسهای PHP ارائه دهنده های دو مرحلهای هستند. - صافی
two_factor_providers_for_userارائهدهندگان دو مرحلهای موجود برای یک کاربر خاص را بازنویسی میکند. مقادیر آرایه نمونههایی از کلاسهای ارائهدهنده هستند و شیء کاربرWP_Userبه عنوان آرگومان دوم در دسترس است. - فیلتر
two_factor_enabled_providers_for_userفهرست ارائه دهندگان دو عاملی فعال شده برای یک کاربر را لغو می کند. آرگومان اول آرایه ای از نام کلاس های ارائه دهنده فعال به عنوان مقادیر است، آرگومان دوم شناسه کاربر است. two_factor_user_authenticatedاقدامی که ورود به سیستم را دریافت می کندWP_Userشی به عنوان اولین آرگومان برای تعیین کاربر وارد شده بلافاصله پس از گردش کار احراز هویت.- صافی
two_factor_user_api_login_enableتأیید هویت برای REST API و XML-RPC را فقط به رمزهای عبور برنامه محدود میکند. شناسه کاربر را به عنوان آرگومان دوم ارائه میدهد. two_factor_token_ttlفیلتر فاصله زمانی را بر حسب ثانیه که رمز ایمیل پس از تولید در نظر گرفته میشود، لغو میکند. زمان را بر حسب ثانیه به عنوان اولین آرگومان و شناسه می پذیردWP_Userشی در حال احراز هویت.- صافی
two_factor_email_token_lengthتعداد ۸ کاراکتر پیشفرض برای توکنهای ایمیل را بازنویسی میکند. - صافی
two_factor_backup_code_lengthتعداد ۸ کاراکتر پیشفرض برای کدهای پشتیبان را بازنویسی میکند.WP_Userکاربر مرتبط را به عنوان آرگومان دوم ارائه میدهد. - صافی
two_factor_rest_api_can_edit_userاینکه آیا تنظیمات دو مرحلهای کاربر از طریق REST API قابل ویرایش است را بازنویسی میکند. آرگومان اول مقدار بولی$can_editفعلی و آرگومان دوم شناسه کاربر است. - اکشن
two_factor_before_authentication_promptکه شیء ارائهدهنده را دریافت کرده و پیش از نمایش پیام در فرم ورودی تأیید هویت اجرا میشود. - اکشن
two_factor_after_authentication_promptکه شیء ارائهدهنده را دریافت کرده و پس از نمایش پیام در فرم ورودی تأیید هویت اجرا میشود. - اکشن
two_factor_after_authentication_inputکه شیء ارائهدهنده را دریافت کرده و پس از نمایش ورودی در فرم تأیید هویت اجرا میشود (اگر فرم ورودی نداشته باشد، بلافاصله پس ازtwo_factor_after_authentication_promptاجرا میشود). two_factor_login_backup_linksپیوندهای پشتیبان نمایشدادهشده در فرم ورود دومرحلهای را فیلتر میکند.
هدایت پس از مرحله تأیید دومرحلهای
برای هدایت کاربران به یک نشانی مشخص پس از تکمیل مرحله تأیید دومرحلهای، از فیلتر داخلی login_redirect در هسته وردپرس استفاده کنید. این فیلتر همانند روند معمول ورود در وردپرس عمل میکند:
add_filter( 'login_redirect', function( $redirect_to, $requested_redirect_to, $user ) {
return home_url( '/dashboard/' );
}, 10, 3 );
عکسهای صفحه




سوالات متداول
افزونه دو مرحلهای از چه نگارشهای PHP و وردپرس پشتیبانی میکند؟
این افزونه از دو نگارش اصلی آخر وردپرس و حداقل نگارش PHP که توسط آن نگارشهای وردپرس پشتیبانی میشوند، پشتیبانی میکند.
چگونه می توانم بازخورد ارسال کنم یا در مورد یک اشکال کمک بگیرم؟
بهترین مکان برای گزارش اشکالات، پیشنهادات ویژگی یا هر بازخورد دیگر (غیر امنیتی) در آن است صفحه مسائل Two Factor گیت هاب. قبل از ارسال یک شماره جدید، لطفاً مشکلات موجود را جستجو کنید تا بررسی کنید که آیا شخص دیگری بازخورد مشابهی را گزارش کرده است یا خیر.
کجا می توانم اشکالات امنیتی را گزارش کنم؟
مشارکت کنندگان افزونه و جامعه وردپرس اشکالات امنیتی را جدی می گیرند. ما از تلاشهای شما برای افشای مسئولانه یافتههایتان قدردانی میکنیم و تمام تلاش خود را برای قدردانی از مشارکت شما انجام خواهیم داد.
برای گزارش یک مشکل امنیتی، لطفاً از برنامه وردپرس HackerOne دیدن کنید.
اگر دسترسی به همه روشهای تأیید هویت خود را از دست بدهم چه میشود؟
اگر کدهای پشتیبان را فعال کرده باشید، میتوانید از یکی از آنها برای بازیابی دسترسی استفاده کنید. اگر کد پشتیبان ندارید یا همه آنها را استفاده کردهاید، باید با مدیر سایت تماس بگیرید تا حساب شما بازنشانی شود. به همین دلیل مهم است که همیشه کدهای پشتیبان را فعال کرده و آنها را در مکانی امن نگهداری کنید.
آیا میتوانم این افزونه را با WebAuthn استفاده کنم؟
این افزونه پیشتر از FIDO U2F پشتیبانی میکرد که پیشدرآمد WebAuthn بود. یک درخواست باز برای افزودن پشتیبانی WebAuthn در اینجا وجود دارد: https://github.com/WordPress/two-factor/pull/427
آیا روش پیشنهادی برای استفاده از passkeyها یا کلیدهای امنیتی سختافزاری با Two‑Factor وجود دارد؟
بله. برای passkeyها و کلیدهای امنیتی سختافزاری میتوانید افزونه Two‑Factor Provider: WebAuthn را نصب کنید: https://wordpress.org/plugins/two-factor-provider-webauthn/ این افزونه بهصورت مستقیم با Two‑Factor یکپارچه میشود و تأیید هویت مبتنی بر WebAuthn را بهعنوان یک گزینه دومرحلهای اضافی برای کاربران اضافه میکند.
نقد و بررسیها
توسعه دهندگان و همکاران
“Two Factor” نرم افزار متن باز است. افراد زیر در این افزونه مشارکت کردهاند.
مشارکت کنندگان“Two Factor” به 40 زبان ترجمه شده است. با تشکر از مترجمین برای همکاری و کمکهایشان.
ترجمه “Two Factor” به زبان شما.
علاقه مند به توسعه هستید؟
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
گزارش تغییرات
۰.۱۶.۰ — ۲۰۲۶-۰۳-۲۷
- تغییرات ناسازگار: حذف پشتیبانی از ارائهدهنده قدیمی FIDO U2F توسط #439.
- ویژگیهای جدید: افزودن صفحه تنظیمات اختصاصی برای پیکربندی افزونه در wp-admin توسط #764.
- ویژگیهای جدید: افزودن فیلتر پیوندهای پشتیبانی تا استفادهکنندگان بتوانند پیوندهای راهنما یا بازیابی متناسب با زمینه را سفارشی کنند توسط #615.
- ویژگیهای جدید: بهروزرسانی سبک و رفتار رابط کاربری کدهای پشتیبان توسط #804.
- رفع خطاها: حذف اسرار ذخیرهشده TOTP زمانی که ارائهدهنده TOTP غیرفعال میشود توسط #802.
- رفع خطاها: سختگیرانهتر شدن مدیریت ارائهدهندهها تا بررسیهای ورود و تنظیمات در صورت ناپدید شدن ارائهدهندههای مورد انتظار دچار شکست باز نشوند، توسط #586.
- رفع خطاها: اطمینان از اینکه فقط ارائهدهندههای پیکربندیشده در تنظیمات کاربر ذخیره و فعال میشوند توسط #798.
- رفع خطاها: بهبود دسترسپذیری صفحه تنظیمات و اصلاح رفتار پیوند تنظیمات نمایه توسط #828 و #830.
- رفع خطاها: رفع موارد نقض PHPCS در پروندههای ارائهدهنده توسط #851.
- بهروزرسانیهای توسعه: انتقال استایلهای ورود و اسکریپتهای ارائهدهنده از خروجی درونخطی به داراییهای خارجی/صفبندیشده توسط #807 و #814.
- بهروزرسانیهای توسعه: بهبود مستندات درونخطی و سازگاری با تحلیل ایستای کد (WPCS/phpstan) توسط #810، #815 و #817.
- بهروزرسانیهای توسعه: بهبود پایداری آزمونهای واحد و یکپارچهسازی گزارش پوشش کد در CI توسط #825، #841 و #842.
- بهروزرسانیهای توسعه: بهروزرسانی مستندات readme و نوسازی زیرساخت گردشکار CI توسط #835، #837، #843 و #849.
- بهروزرسانی وابستگیها: ارتقای
qsاز نسخه 6.14.1 به 6.14.2 توسط #794. - بهروزرسانی وابستگیها: ارتقای
basic-ftpاز نسخه 5.0.5 به 5.2.0 توسط #816. - بهروزرسانی وابستگیها: اعمال بهروزرسانیهای خودکار lint/format و نوسازی بستههای Composer مرتبط توسط #799.
۰.۱۵.۰ — ۲۰۲۶-۰۲-۱۳
- تغییرات ناسازگار: اجرای فرایند تأیید دومرحلهای فقط زمانی که انتظار میرود، توسط @kasparsd در #660 و #793.
- ویژگیهای جدید: افزودن نشانی IP کاربر و هشدار متنی مرتبط در ایمیلهای کد تأیید دومرحلهای توسط @todeveni در #728
- ویژگیهای جدید: بهینهسازی متن ایمیل برای TOTP توسط @masteradhoc در #789
- ویژگیهای جدید: افزودن پیوند اقدام «تنظیمات» به فهرست افزونهها برای دسترسی سریع به نمایه توسط @hardikRathi در #740
- ویژگیهای جدید: افزودن هوکهای اضافی فرم توسط @eric-michel در #742
- ویژگیهای جدید: سازگاری کامل با RFC6238 توسط @ericmann در #656
- ویژگیهای جدید: تجربه کاربری یکپارچه برای راهاندازی TOTP توسط @kasparsd در #792
- مستندات: مستندات
@sinceتوسط @masteradhoc در #781 - مستندات: بهروزرسانی مستندات کاربر و مدیر و آمادهسازی برای اسکرینشاتهای بیشتر توسط @jeffpaul در #701
- مستندات: افزودن فهرست تغییرات و قدردانیها و بهروزرسانی یادداشتهای انتشار توسط @jeffpaul در #696
- مستندات: پاکسازی فایل readme.txt توسط @masteradhoc در #785
- مستندات: افزودن اطلاعات تاریخ و زمان در بالای دستورالعملهای راهاندازی TOTP توسط @masteradhoc در #772
- مستندات: شفافسازی دستورالعملهای راهاندازی TOTP توسط @masteradhoc در #763
- مستندات: بهروزرسانی RELEASING.md توسط @jeffpaul در #787
- بهروزرسانیهای توسعه: توقف استقرار در SVN trunk برای ادغامها به شاخه
masterتوسط @kasparsd در #738 - بهروزرسانیهای توسعه: اصلاح بررسیهای CI برای سازگاری PHP توسط @kasparsd در #739
- بهروزرسانیهای توسعه: اصلاح ارجاعهای Playground توسط @kasparsd در #744
- بهروزرسانیهای توسعه: حفظ ترجمههای موجود هنگام معرفی متن راهنمای جدید در ایمیلها توسط @kasparsd در #745
- بهروزرسانیهای توسعه: رفع خطای
missing_direct_file_access_protectionتوسط @masteradhoc در #760 - بهروزرسانیهای توسعه: رفع خطای
mismatched_plugin_nameتوسط @masteradhoc در #754 - بهروزرسانیهای توسعه: معرفی گردشکار Props Bot توسط @jeffpaul در #749
- بهروزرسانیهای توسعه: Plugin Check: رفع پارامتر گمشده $domain توسط @masteradhoc در #753
- بهروزرسانیهای توسعه: آزمونها: بهروزرسانی به نسخه پشتیبانیشده وردپرس 6.8 توسط @masteradhoc در #770
- بهروزرسانیهای توسعه: رفع پیام منسوخشده (deprecated) در PHP 8.5 توسط @masteradhoc در #762
- بهروزرسانیهای توسعه: حذف بررسیهای نسخههای 7.2 و 7.3 در برابر شاخه trunk توسط @masteradhoc در #769
- بهروزرسانیهای توسعه: رفع خطاهای Plugin Check:
MissingTranslatorsCommentوMissingSingularPlaceholderتوسط @masteradhoc در #758 - بهروزرسانیهای توسعه: افزودن آزمونهای PHP 8.5 برای آخرین نسخه و نسخه trunk وردپرس توسط @masteradhoc در #771
- بهروزرسانیهای توسعه: افزودن
phpcs:ignoreبرای خطاهای مثبت کاذب (false positives) توسط @masteradhoc در #777 - بهروزرسانیهای توسعه: اصلاح (TOTP): پیوند
otpauthدر نشانی QR code توسط @sjinks در #784 - بهروزرسانیهای توسعه: بهروزرسانی فایل deploy.yml توسط @masteradhoc در #773
- بهروزرسانیهای توسعه: بهروزرسانی نسخه موردنیاز وردپرس توسط @masteradhoc در #765
- بهروزرسانیهای توسعه: اصلاح: اطمینان از توقف اجرا پس از تغییر مسیرها (redirects) توسط @sjinks در #786
- بهروزرسانیهای توسعه: رفع خطاهای
WordPress.Security.EscapeOutput.OutputNotEscapedتوسط @masteradhoc در #776 - بهروزرسانی وابستگیها: ارتقای qs و express توسط @dependabot[bot] در #746
- بهروزرسانی وابستگیها: ارتقای lodash از 4.17.21 به 4.17.23 توسط @dependabot[bot] در #750
- بهروزرسانی وابستگیها: ارتقای lodash-es از 4.17.21 به 4.17.23 توسط @dependabot[bot] در #748
- بهروزرسانی وابستگیها: ارتقای phpunit/phpunit از 8.5.44 به 8.5.52 توسط @dependabot[bot] در #755
- بهروزرسانی وابستگیها: ارتقای symfony/process از 5.4.47 به 5.4.51 توسط @dependabot[bot] در #756
- بهروزرسانی وابستگیها: ارتقای qs و body-parser توسط @dependabot[bot] در #782
- بهروزرسانی وابستگیها: ارتقای webpack از 5.101.3 به 5.105.0 توسط @dependabot[bot] در #780
۰.۱۴.۲ — ۲۰۲۵-۱۲-۱۱
- ویژگیهای جدید: افزودن صافی برای rest_api_can_edit_user_and_update_two_factor_options توسط @gutobenn در #689
- بهروزرسانیهای توسعه: حذف ابزار Coveralls و افزودن گزارش پوشش درونخطی توسط @kasparsd در #717
- بهروزرسانیهای توسعه: بهروزرسانی مسیر blueprint برای دریافت از شاخه main بهجای شاخه حذفشده… توسط @georgestephanis در #719
- بهروزرسانیهای توسعه: رفع استقرار داراییهای blueprint و wporg توسط @kasparsd در #734
- بهروزرسانیهای توسعه: بارگذاری انتشار فقط در انتشارهای دارای تگ توسط @kasparsd در #735
- بهروزرسانیهای توسعه: ارتقای playwright و @playwright/test توسط @dependabot[bot] در #721
- بهروزرسانیهای توسعه: ارتقای tar-fs از 3.1.0 به 3.1.1 توسط @dependabot[bot] در #720
- بهروزرسانیهای توسعه: ارتقای node-forge از 1.3.1 به 1.3.2 توسط @dependabot[bot] در #724
- بهروزرسانیهای توسعه: ارتقای js-yaml توسط @dependabot[bot] در #725
- بهروزرسانیهای توسعه: علامتگذاری بهعنوان آزمایششده با آخرین نسخه هسته وردپرس توسط @kasparsd در #730
۰.۱۴.۱ — ۲۰۲۵-۰۹-۰۵
- برای نمایش، نشانی URL مربوط به TOTP را URI encode نکنید. توسط @dd32 در #711
- حذف پرونده تکراری Security.md توسط @slvignesh05 در #712
- رفع مشکلات linting توسط @sudar در #707
- بهروزرسانی وابستگیهای توسعه و رفع آزمون واحد QR ناموفق توسط @kasparsd در #714
- فعالسازی رویداد تغییر چکباکس جاوااسکریپت توسط @gedeminas در #688
۰.۱۴.۰ — ۲۰۲۵-۰۷-۰۳
- ویژگیها: فعالسازی گذرواژههای برنامه برای تأیید هویت REST API و XML‑RPC (بهصورت پیشفرض) توسط @joostdekeijzer در #697 و #698. پیشتر لازم بود صافی two_factor_user_api_login_enable روی true تنظیم شود، اما اکنون در هنگام تأیید هویت گذرواژه برنامه بهصورت پیشفرض فعال است. ورود XML‑RPC همچنان برای گذرواژههای معمولی کاربران غیرفعال است.
- ویژگیها: برچسبگذاری روشهای پیشنهادی برای سادهسازی پیکربندی توسط @kasparsd در #676 و #675
- مستندات: افزودن نسخه نمایشی افزونه در WP.org توسط @kasparsd در #667
- مستندات: مستندسازی نسخههای پشتیبانیشده هسته WP و PHP توسط @jeffpaul در #695
- مستندات: مستندسازی فرایند انتشار توسط @jeffpaul در #684
- ابزارها: حذف تصاویر صفحه و گرافیکهای تکراری WP.org از شاخه SVN trunk توسط @jeffpaul در #683
