رفتن به محتوا
cutty.dev
All posts

امنیت لینک‌های دارای رمز عبور — وقتی کلیک می‌کنید چه اتفاقی می‌افتد

می‌توانید به لینک کوتاه خود رمز عبور اضافه کنید. ما آنچه را که در پس‌زمینه اتفاق می‌افتد — بدون استفاده از اصطلاحات پیچیده — و دلیل اهمیت آن را به شما نشان می‌دهیم.

نیمی از آموزش‌های مربوط به لینک‌های دارای رمز عبور با این جمله شروع می‌شوند که این یک «لایه امنیتی اضافی» است. و همین‌جا تمام می‌شود. به نظر من، این دقیقاً کم‌اهمیت‌ترین چیزی است که می‌توان در این باره گفت.

زیرا «لایه امنیتی» هیچ چیز را توضیح نمی‌دهد. به شما نمی‌گوید که با این رمز عبور چه اتفاقی می‌افتد، چه کسی آن را می‌بیند، یا اصلاً چه زمانی معنایی دارد. و این‌ها تنها سوالاتی هستند که ارزش پرسیدن دارند، قبل از اینکه روی «افزودن رمز عبور» کلیک کنید.

بنابراین یکی یکی.

رمز عبور در لینک همان قفل روی دروازه نیست

مردم تصور می‌کنند که رمز عبور، لینک را به طور کامل و غیرقابل نفوذ می‌بندد. این‌طور نیست. امنیت لینک‌های دارای رمز عبور بیشتر شبیه به بلیط یک کنسرت عمل می‌کند: هر کس بلیط داشته باشد، وارد می‌شود. هر کس آن را به دیگری بدهد، او نیز اجازه ورود به شخص دیگری را می‌دهد.

این شبیه به یک نقص به نظر می‌رسد. نیست. فقط باید دانست که این مکانیسم چه کاربردی دارد.

سه موقعیتی که واقعاً مفید هستند:

لیست قیمت برای مشتریان پرمیوم یا مستندی در نسخه بتا، پیش از آنکه به جهان عرضه شود. بدون رمز عبور، چنین لینکی دیر یا زود در گوگل فرود می‌آید یا دست به دست می‌شود.

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

و چیزی که به صورت کاملاً عمومی منتشر می‌کنید، اما می‌خواهید کنترل آن را در دست داشته باشید. لینک ممکن است در گردش باشد. بدون رمز عبور، هیچ‌کس نمی‌تواند وارد شود.

و حالا آنچه این راهنما نباید نادیده می‌گرفت

شما رمز عبور را در فرم تایپ می‌کنید. در همان لحظه، آن ناپدید می‌شود. به معنای واقعی کلمه. این که شما "tajne123" را تنظیم کرده‌اید، قبل از اینکه بتوانید دکمه را رها کنید، از شکل خوانا خارج می‌شود.

چه چیزی در پایگاه داده باقی می‌ماند؟ نه رمز عبور را. بلکه اثر انگشتِ آن را. به زبان تخصصی: hash. رشته‌ای از کاراکترها که تنها زمانی با رمز عبور شما مطابقت دارد که کسی دقیقاً همان چیزی را که شما وارد می‌کنید، تایپ کند. این رشته به خودی خود هیچ چیز را فاش نمی‌کند.

من این را مستقیماً می‌گویم، چون مهم است: من، به عنوان مدیر سرویس، هیچ راهی برای خواندن رمز عبور شما ندارم. نه به این دلیل که مودب هستم، بلکه به این دلیل که فیزیکی چیزی برای خواندن وجود ندارد. اگر کسی به پایگاه داده نفوذ می‌کرد، فقط مجموعه‌ای از این اثرانگشت‌ها را با خود می‌برد و تمام.

الگوریتمی که این را محاسبه می‌کند، عمداً کند است. می‌دانم که «کند» شبیه به یک شکایت به نظر می‌رسد، اما این یک مزیت است. هدف این است که کسی که پایگاه داده را دزدیده، برای حدس زدن تنها یک رمز عبور مجبور باشد زمان بسیار زیادی را صرف کند. صحبت از سال‌هاست، نه ثانیه‌ها.

کلیک از طرف دیگر

کسی لینک شما را دریافت کرده و روی آن کلیک می‌کند. به جای اینکه مستقیماً به مقصد برسد، این صفحه را می‌بیند: «این لینک با رمز عبور محافظت شده است»، یک فیلد برای تایپ کردن و یک دکمه.

وارد می‌کند. سرور آنچه را که وارد شده است با اثر انگشت ذخیره شده مقایسه می‌کند. مطابقت دارد؟ یک توکن نشست (session token) دریافت می‌کند که تا ۲۴ ساعت معتبر است. در ۲۴ ساعت آینده، بدون نیاز به وارد کردن هیچ چیزی، از طریق لینک بازمی‌گردد. نیازی به به خاطر سپردن نیست، نیازی به زحمت نیست.

مطابق نیست؟ خطا. پنج اشتباه از همان آدرس IP و ورود برای پنج دقیقه مسدود می‌شود. رباتی که سعی می‌کند با امتحان کردن رمزهای عبور پشت سر هم حمله کند، به دیوار برخورد می‌کند.

آنچه اینجا به سادگی وجود ندارد

ما رمزهای عبور را به صورت متن ساده ذخیره نمی‌کنیم. هیچ‌جا. حتی در لاگ‌ها، که هنگام جستجوی خطاها آن‌ها را بررسی می‌کنم.

ما رمزهای عبور را از طریق ایمیل ارسال نمی‌کنیم. این بدان معناست که اگر کسی رمز خود را فراموش کند، من آن را برای او ارسال نخواهم کرد، زیرا از آن مطلع نیستم. شما باید خودتان آن را و از همان کانالی که قبلاً استفاده می‌کردید، ارسال کنید.

و ما رمزهای عبور را به بیرون منتقل نمی‌کنیم. هیچ تحلیل، هیچ بازاریابی و هیچ AB این داده‌ها را لمس نمی‌کند. (این دقیقاً قاعده‌ای است که در تمام cutty.dev اجرا می‌شود، نه فقط اینجا.)

دو عادت که تفاوت ایجاد می‌کنند

اولین مورد: رمز عبور را از خودتان سر هم نکنید. نام شرکت به اضافه سال تأسیس، هدیه‌ای برای هر کسی است که شما را می‌شناسد. یک مولد در مرورگر، در عرض یک ثانیه چیزی بهتر تحویل می‌دهد.

دوم، مهم‌تر: رمز عبور را از همان کانالی که لینک را می‌فرستید، ارسال نکنید. اگر لینک با ایمیل ارسال شد؟ رمز را با پیامک (SMS) بفرستید. یا برعکس. منطق این است که با تسخیر یک صندوق پستی، کسی به مجموعه کامل دسترسی پیدا نکند.

یک نکته ریز که کمتر کسی از آن باخبر است: شما می‌توانید چندین لینک ایجاد کنید که همگی به یک آدرس منتهی می‌شوند، اما با عبارت‌های عبور متفاوت. شما به پنج نفر دسترسی می‌دهید و هر کدام یک لینک جداگانه دارند. اگر قرار است یکی خداحافظی کند؟ فقط لینک او را مسدود می‌کنید، بقیه حتی متوجه نخواهند شد.

پسورد را بدون ایجاد لینک جدید تغییر می‌دهید. پنل، "ویرایش"، پسورد جدید. توجه: تمام نشست‌های فعال ۲۴ ساعته بلافاصله منقضی می‌شوند. هر کسی باید پسورد را دوباره وارد کند.

مرزی که بهتر است از قبل از آن مطلع باشید

بیایید به سراغ بلیط کنسرت برگردیم. رمز عبور از موتور جستجو و از مهمان ناخوانده محافظت می‌کند. اما از کسی که رمز را می‌داند و تصمیم می‌گیرد آن را با دنیا به اشتراک بگذارد، محافظت نمی‌کند.

اگر سناریوی شما اینگونه است که «فقط دقیقاً همین یک نفر باید آن را ببیند و نه هیچ‌کس دیگر»، پس یک رمز عبور کافی نیست. در اینجا شما به حساب کاربری، ورود و احراز هویت نیاز دارید. سطح دیگر، مشکل دیگر.

اما دست‌ها بالا، واقعاً چقدر پیش می‌آید که چنین سناریویی داشته باشید؟ در تجربه من، به ندرت اتفاق می‌افتد. در اکثریت قریب به اتفاق موارد، موضوع فقط یک «نمی‌خواهم کسی از خیابان به اینجا بیاید» ساده است. و این جمله با وفور کافی است.

اگر می‌خواهید ببینید از داخل چگونه است — هنگام ایجاد لینک، بخش "Opcje zaawansowane" را باز کرده و "Dodaj hasło" را علامت بزنید. بقیه کارها خودبه‌خود انجام می‌شود.