Salt وردپرس چیست؟ راهنمای تغییر امن در 5دقیقه
- امنیت وردپرسمقالات آموزشی
- بروزرسانی شده در

فرض کنید متوجه شدید یه نفر به سایتتون دسترسی داشته. شاید یه همکار سابق باشه، شاید یه توسعهدهنده که پروژهش تموم شده، یا شاید واقعاً یه نفوذ اتفاق افتاده. کاری که تقریباً همه انجام میدن اینه که سریع میرن رمز عبور رو عوض میکنن و خیالشون راحت میشه.
اما یه نکتهی ناخوشایند وجود داره: عوض کردن رمز عبور، کسی رو که همین الان وارد سایت شده بیرون نمیندازه. اگه اون شخص روی مرورگر خودش لاگین مونده باشه، کوکی نشستش همچنان معتبره و میتونه راحت داخل پیشخوان بچرخه، انگار که هیچ اتفاقی نیفتاده. رمز جدید فقط برای ورودهای بعدی لازمه.
چیزی که واقعاً همه رو یکجا بیرون میندازه، تغییر کلیدهای امنیتی وردپرس یا همون Salt Keys است. یه کار دو دقیقهای که خیلیها اصلاً نمیدونن وجود داره، اما در شرایط بحرانی مهمترین کاریه که میتونید انجام بدید.
در این مقاله میبینیم این کلیدها دقیقاً چی هستن، چه کاری میکنن (و مهمتر از اون، چه کاری نمیکنن)، کِی باید عوضشون کنید و چطور بدون اینکه سایتتون رو خراب کنید این کار رو انجام بدید.
آنچه در این مقاله میخوانید
سالت اصلاً یعنی چه؟
اسمش از دنیای رمزنگاری میاد. وقتی میخوایم یه اطلاعات حساس رو به شکلی ذخیره یا منتقل کنیم که قابل بازگشت نباشه، از تابع هش استفاده میکنیم. اما هش خالی یه مشکل داره: یه ورودی مشخص همیشه خروجی یکسانی تولید میکنه، پس با جدولهای آماده میشه حدسش زد.
راهحل اینه که قبل از هش کردن، یه رشتهی تصادفی و مخفی به داده اضافه کنیم. به اون رشتهی تصادفی میگن «نمک» یا Salt. حالا خروجی هش برای هر سایت کاملاً متفاوت میشه، چون نمکش فرق داره. دقیقاً مثل غذا؛ همون دستور پخت با نمک متفاوت، مزهی متفاوتی میده.
وردپرس از این ایده برای امضا کردن کوکیهای ورود استفاده میکنه. هر سایت وردپرسی مجموعهی کلیدهای تصادفی مخصوص خودش رو داره و همین باعث میشه کوکیای که در یه سایت معتبره، در سایت دیگه هیچ ارزشی نداشته باشه.
یک تصور اشتباه رایج دربارهی کوکیها
در خیلی از مقالات فارسی (از جمله نسخهی قدیمی همین مقاله در سایت خودمون) نوشته شده که وردپرس نام کاربری و رمز عبور شما رو داخل کوکی ذخیره میکنه و کلیدهای Salt این اطلاعات رو رمزنگاری میکنن. بذارید همینجا تصحیحش کنیم: رمز عبور شما هیچوقت داخل کوکی ذخیره نمیشه.
چیزی که واقعاً داخل کوکی قرار میگیره، ترکیبی از نام کاربری، زمان انقضا، یه شناسهی نشست و یه امضای رمزنگاریشدهست. اون امضا با کمک همین کلیدهای Salt ساخته میشه. وقتی شما صفحهای رو باز میکنید، وردپرس همون امضا رو دوباره با کلیدهای خودش محاسبه میکنه و اگه با چیزی که در کوکی هست جور دربیاد، شما رو معتبر میشناسه.
معنی عملیش اینه که کسی نمیتونه کوکی جعلی بسازه و خودش رو جای شما جا بزنه، مگر اینکه کلیدهای سایت شما رو داشته باشه. و دقیقاً به همین دلیله که وقتی این کلیدها عوض میشن، تمام کوکیهای قبلی یکشبه بیاعتبار میشن.
ضمناً رمز عبور کاربران هم بهصورت متن ساده در دیتابیس ذخیره نمیشه؛ وردپرس اون رو جداگانه هش میکنه و این موضوع ربطی به کلیدهای Salt نداره. این دو تا سیستم مستقل از هم کار میکنن.
آن هشت خط عجیب داخل wp-config.php
اگه تا حالا فایل wp-config.php رو باز کرده باشید، حتماً به یه بلوک هشتخطی برخوردید که پر از کاراکترهای بیمعنیه. اون بلوک همین کلیدهاست و در پوشهی اصلی وردپرس (معمولاً public_html) قرار داره.

این هشت مقدار در واقع چهار کلید و چهار نمک هستن که دو به دو با هم کار میکنن:
AUTH_KEYوAUTH_SALTبرای احراز هویت عمومیSECURE_AUTH_KEYوSECURE_AUTH_SALTبرای ورود روی اتصال امن HTTPSLOGGED_IN_KEYوLOGGED_IN_SALTبرای تشخیص اینکه کاربر لاگین کردهNONCE_KEYوNONCE_SALTبرای تولید nonceها؛ همون توکنهای یکبارمصرفی که جلوی حملات CSRF رو میگیرن
در نسخههای خیلی قدیمی وردپرس ممکنه بعضی از اینها اصلاً وجود نداشته باشن. اگه سایت شما اینطوریه، صرفاً اضافه کردنشون خودش یه ارتقای امنیتی محسوب میشه.
سالت چه کاری میکند و چه کاری نمیکند
اینجا باید صادق باشیم، چون در خیلی از مقالات این موضوع بیش از حد بزرگ شده. جملههایی مثل «کلیدهای Salt نفوذ به سایت را غیرممکن میکنند» دقیق نیستن.
چیزی که این کلیدها واقعاً انجام میدن اینه که جلوی جعل کوکی رو میگیرن و به شما این امکان رو میدن که با یه تغییر ساده، همهی نشستهای فعال رو باطل کنید. همین. کاربردشون دقیق و مشخصه و ارزشمنده، اما محدوده.
در مقابل، چند کاری هست که انجام نمیدن و بهتره روشون حساب باز نکنید. رمز عبور ضعیف شما رو قوی نمیکنن. جلوی حملات حدس رمز یا brute force رو نمیگیرن. دیتابیس سایتتون رو رمزنگاری نمیکنن. و از همه مهمتر، اگه سایتتون آلوده به بدافزار باشه، عوض کردن کلیدها بهتنهایی مشکل رو حل نمیکنه.
این نکتهی آخر رو جدی بگیرید. اگه مهاجم به فایلهای سایت شما دسترسی داره، میتونه فایل wp-config.php رو بخونه و کلیدهای جدید رو هم ببینه. یعنی تغییر سالت در حالتی که نفوذ هنوز فعاله، مثل عوض کردن قفل دره در حالی که کلید ساز داخل خونه نشسته. اول باید سایت رو پاکسازی کنید، بعد کلیدها رو عوض کنید.
پس چه زمانی باید عوضشان کنیم؟
برخلاف چیزی که بعضی مقالات توصیه میکنن، لازم نیست هر هفته این کار رو انجام بدید. تغییر کلیدها یه ابزار واکنشیه، نه یه روتین اجباری. این موقعیتها هستن که واقعاً ارزشش رو دارن:
وقتی سایتی رو خریدید یا تحویل گرفتید. این شاید مهمترین موردش باشه. مالک قبلی یا توسعهدهندهی قبلی ممکنه هنوز روی سیستمش لاگین باشه و صرفاً عوض کردن رمز، بیرونش نمیندازه. اگه در این وضعیت هستید، پیشنهاد میکنم مقالهی کارهای لازم بعد از خرید سایت دست دوم رو هم ببینید که کل این فرآیند رو قدمبهقدم توضیح داده.
بعد از پاکسازی یه نفوذ یا آلودگی. بعد از اینکه مطمئن شدید سایت تمیز شده، این کار تضمین میکنه هیچ نشست فعالی از دورهی آلودگی باقی نمونده.
وقتی روی یه سیستم عمومی لاگین کردید. کافهنت، لپتاپ کسی دیگه، یا هر جایی که مطمئن نیستید بعداً کسی سراغ اون مرورگر نمیره.
وقتی همکاری از تیم جدا میشه یا دسترسی کسی رو قطع میکنید. حذف کاربر معمولاً کافیه، اما اگه میخواید کاملاً خیالتون راحت باشه، این کار رو هم بکنید.
و اگه قالب یا افزونهی نالشدهای روی سایت نصب بوده. بعد از حذفشون، فرض رو بر این بذارید که چیزی لو رفته.
خارج از این موقعیتها، یه بار در سال یا هر چند ماه کافیه و بیشتر از این هم مشکلی ایجاد نمیکنه، فقط لازم نیست.
روش دستی؛ سادهتر از چیزی که فکر میکنید
خیلی از مقالات این روش رو «سخت و وقتگیر» توصیف میکنن و پیشنهاد میدن حتماً از افزونه استفاده کنید. راستش این کار در عمل کمتر از پنج دقیقه طول میکشه و به هیچ دانش برنامهنویسی نیاز نداره. فقط باید حواستون جمع باشه.
- قدم اول: قبل از هر چیز از فایل
wp-config.phpیه کپی بگیرید و روی کامپیوترتون نگه دارید. اگه چیزی اشتباه رفت، همین فایل نجاتتون میده. - قدم دوم: به آدرس
api.wordpress.org/secret-key/1.1/salt/برید. این ابزار رسمی خود وردپرسه و هر بار که صفحه رو باز کنید، یه مجموعه کلید کاملاً جدید و تصادفی تولید میکنه. کل محتوای صفحه رو کپی کنید. - قدم سوم: از طریق فایل منیجر هاست یا با FTP، فایل
wp-config.phpرو در پوشهی اصلی وردپرس باز کنید. بلوک هشتخطی که باdefine('AUTH_KEY'شروع میشه رو پیدا کنید. - قدم چهارم: اون هشت خط رو کامل حذف کنید و مقادیر جدیدی که کپی کرده بودید رو جاشون بذارید. بعد فایل رو ذخیره کنید.
همین. به محض ذخیره شدن فایل، شما و تمام کاربران سایت از حسابهاتون خارج میشید. این نشونهی موفقیت کاره، نه خطا. کافیه دوباره با همون نام کاربری و رمز قبلی وارد بشید.
یه هشدار مهم: در فایل wp-config.php فقط و فقط به همین هشت خط دست بزنید. خطهای مربوط به نام دیتابیس، کاربر دیتابیس، رمز دیتابیس و پیشوند جدولها رو تغییر ندید. دستکاری اشتباه اونها باعث میشه سایت کاملاً از کار بیفته. و حتماً از یه ویرایشگر متن ساده استفاده کنید، نه نرمافزارهایی مثل Word که ممکنه کاراکترها رو تغییر بدن.
روش افزونهای
اگه اصلاً دوست ندارید سراغ فایلها برید، افزونههایی هستن که این کار رو با یه کلیک انجام میدن. افزونهی Salt Shaker یکی از قدیمیترینهاست و علاوه بر تغییر آنی، امکان زمانبندی خودکار رو هم میده. بعضی افزونههای امنیتی جامع مثل Sucuri Security هم همین قابلیت رو بهعنوان بخشی از ابزارهاشون دارن.

اما یه توصیهی کلی دارم: قبل از نصب هر افزونهای، تاریخ آخرین بهروزرسانی و سازگاریش با نسخهی فعلی وردپرس رو چک کنید. نصب یه افزونهی رهاشده برای انجام کاری که خودش پنج دقیقه طول میکشه، از نظر امنیتی منطقی نیست. اینجا یکی از معدود جاهاییه که من روش دستی رو ترجیح میدم.
زمانبندی خودکار؛ ایدهی خوبی است؟
خیلی از مقالات پیشنهاد میدن که تغییر کلیدها رو روی حالت روزانه یا هفتگی تنظیم کنید. قبل از اینکه این کار رو بکنید، به یه چیز فکر کنید؛ هر بار که کلیدها عوض میشن، تمام کاربران سایت از حسابشون خارج میشن.
برای یه وبلاگ شخصی که فقط خودتون واردش میشید، این هیچ مشکلی نیست. اما برای یه فروشگاه اینترنتی، سایت عضویتی یا سایت آموزشی، این یعنی هر هفته همهی کاربرها بیدلیل بیرون انداخته میشن و باید دوباره وارد بشن. تجربهی کاربری بدی میسازه و در فروشگاهها میتونه باعث رها شدن سبد خرید بشه.
پیشنهاد من اینه که اگه سایتتون کاربر داره، زمانبندی خودکار رو فعال نکنید و در عوض هر وقت واقعاً لازم شد، دستی این کار رو انجام بدید.
بعد از تغییر، چه اتفاقی میافتد؟
در حالت عادی هیچ اتفاق خاصی جز خروج همه از حسابها نمیافته. هیچ محتوایی حذف نمیشه، هیچ تنظیمی بههم نمیریزه و رمز عبور کسی تغییر نمیکنه.
اما گاهی بعد از این کار سایت رفتار عجیبی نشون میده؛ مثلاً مدام از پیشخوان بیرون انداخته میشید یا صفحهی ورود درست کار نمیکنه. در بیشتر موارد مقصر کشه، نه کلیدها. کش صفحه، کش آبجکت و حتی کش مرورگر ممکنه هنوز نسخهی قدیمی رو نگه داشته باشن. پس بعد از تغییر کلیدها، کش سایت رو پاک کنید، مرورگر رو با Ctrl+F5 رفرش کنید و یه بار هم در حالت ناشناس تست کنید.
اگه از افزونهی کش استفاده میکنید، این کار باید از پنل خودش انجام بشه. در رخش مثلاً هم پاکسازی دستی کش در دسترسه و هم پنل عیبیابی کش که نشون میده دقیقاً چه چیزی داره از کش سرو میشه؛ همین معمولاً جلوی چند ساعت سردرگمی رو میگیره.

و اگه بعد از تغییر اصلاً نتونستید وارد بشید و صفحهی سفید دیدید، یعنی احتمالاً موقع ویرایش فایل چیزی بههم ریخته. کافیه همون نسخهی پشتیبانی که اول کار گرفتید رو جایگزین کنید و دوباره با دقت بیشتری امتحان کنید. برای همینه که گرفتن اون کپی، اولین قدم بود.
سالت فقط یک قطعه از پازل است
تغییر کلیدهای امنیتی کار مفیدیه، اما اگه بقیهی موارد رعایت نشن، بهتنهایی سایتتون رو امن نمیکنه. برای اینکه واقعاً خیالتون راحت باشه، اینها رو هم داشته باشید: رمزهای عبور قوی و منحصربهفرد، ورود دو مرحلهای روی حسابهای مدیریتی، محدودسازی تلاشهای ناموفق ورود، بهروز نگه داشتن هسته و قالب و افزونهها، نصب نکردن نسخههای نالشده و در نهایت بکآپ منظم و خودکار. ما براتون دوره امنیت وردپرس رو به صورت رایگان توی سایت گذاشتیم. با دیدن این دوره میتونید امنیت سایتتون رو تضمین کنید تا همیشه خیالتون راحت باشه.
اگه فقط یکی از این موارد رو بخوام برجسته کنم، همون آخریه. امنیت کامل وجود نداره، اما بکآپ سالم یعنی حتی بدترین حالت هم قابل جبرانه.
سوالات متداول
تغییر کلیدهای Salt رمز عبور کاربران را عوض میکند؟
نه. رمزها دستنخورده باقی میمونن و همه با همون رمز قبلی میتونن دوباره وارد بشن. تنها اتفاقی که میافته اینه که نشستهای فعال باطل میشن.
هر چند وقت یک بار باید کلیدها را عوض کنم؟
هیچ بازهی اجباریای وجود نداره. مهمتر از دورهی زمانی، موقعیته: بعد از خرید یا تحویل گرفتن سایت، بعد از پاکسازی نفوذ، بعد از قطع دسترسی یک همکار یا بعد از لاگین روی سیستم ناامن. خارج از اینها، سالی یک بار کاملاً کافیه.
اگر کلیدها را عوض کنم اطلاعات سایتم پاک میشود؟
نه. نوشتهها، محصولات، تنظیمات و کاربران هیچکدوم تحت تأثیر قرار نمیگیرن. این تغییر فقط روی اعتبار کوکیهای ورود اثر میذاره.
سایتم هک شده؛ آیا تغییر سالت مشکل را حل میکند؟
بهتنهایی نه. اگه مهاجم هنوز به فایلهای سایت دسترسی داشته باشه، کلیدهای جدید رو هم میبینه. اول باید سایت رو اسکن و پاکسازی کنید، کاربران مشکوک رو حذف کنید و فایلهای آلوده رو ببندید؛ بعد کلیدها رو عوض کنید.
در فایل wp-config.php این هشت خط را پیدا نکردم، یعنی چه؟
یعنی احتمالاً نسخهی وردپرستون خیلی قدیمیه یا فایل بهدرستی ساخته نشده. در این حالت کافیه مقادیر جدید رو از ابزار رسمی وردپرس بگیرید و به فایل اضافه کنید؛ ترجیحاً بالای خطی که پیشوند جدولها در اون تعریف شده.
بعد از تغییر کلیدها هنوز لاگین هستم، چرا؟
معمولاً به این خاطر که فایل درست ذخیره نشده یا کش سایت هنوز نسخهی قدیمی رو تحویل میده. یک بار کش رو پاک کنید و در حالت ناشناس تست کنید. اگه باز هم لاگین موندید، مطمئن بشید فایلی که ویرایش کردید همون wp-config.php فعال سایت بوده.
جمعبندی
کلیدهای Salt وردپرس یکی از اون قابلیتهاییه که سالها کنار دستتون بوده و احتمالاً هیچوقت بهش نگاه نکردید. کارشون پیچیده نیست: کوکیهای ورود رو امضا میکنن تا کسی نتونه جعلشون کنه، و به شما این قدرت رو میدن که در یک لحظه همهی نشستهای فعال سایت رو باطل کنید.
پس اگه سایتی رو تازه تحویل گرفتید، اگه نفوذی رو پاکسازی کردید یا اگه دسترسی کسی رو قطع کردید، این پنج دقیقه رو براش وقت بذارید. فقط یادتون باشه اول از wp-config.php کپی بگیرید، فقط همون هشت خط رو عوض کنید و بعدش کش سایت رو پاک کنید.
در نهایت واقعبین باشید؛ این کلیدها سایت شما را نفوذناپذیر نمیکنن. اونها یه قفل خوب روی یکی از درهای خونهان، نه کل سیستم امنیتی. بقیهی درها هم باید بسته باشن. موفق و پیروز باشید. 🙂

سلام
وقت بخیر
از این افزونه می شود همزمان با all in one security استفاده کرد؟
سپاسگزارم.
سلام بله