«خودت نسازش» — درسی از رمزنگاری برای طراحی وب
خلاصهٔ کاملتر
توی دنیای امنیت یه اصل شناختهشده وجود داره: «الگوریتم رمزنگاری خودت رو ننویس.» این یعنی برای نرمافزارهای جدی که دادههای حساس کاربرا رو حفظ میکنن، نباید به یه پیادهسازی خانگی و بررسینشده تکیه کنی. نویسنده این مقاله میگه کاش همین ذهنیت محافظهکارانه در طراحی وب هم وجود داشت، چون مرورگرها خیلی از چیزهایی رو که توسعهدهندهها دوباره میسازن، از قبل بهخوبی پیادهسازی کردن.
فهرستی که نویسنده مطرح میکنه شامل موارد زیره: اسکرول صفحه، ناوبری لینکها، انتخاب متن، منوی راستکلیک، کپیپیست، فیلد پسورد، و دیتپیکر. هر کدوم از اینا اگه با کد سفارشی جایگزین بشن، چیزی رو که کاربر بهش عادت داره و بدون فکر ازش استفاده میکنه، تبدیل میکنن به یه چیز ناآشنا که باید دوباره یادش بگیره.
آزاردهندهترین مورد از نظر نویسنده، اسکرول سفارشی هئه. وقتی یه سایت رفتار پیشفرض اسکرول مرورگر رو override میکنه، صفحه یا خیلی کند یا خیلی تند حرکت میکنه و اسکرول با کیبورد هم ممکنه اصلاً کار نکنه. نمونه بد دیگه GitHub هئه که کلیک روی لینکها رو با یه لایه ضخیم جاوااسکریپت مدیریت میکنه، و گاهی باز کردن لینک در تب جدید از انتظار برای لود شدن همون صفحه سریعتره.
در مورد فیلد پسورد، مرورگرها امکاناتی مثل ذخیره و تکمیل خودکار پسورد، تولید پسورد قوی، هشدار برای اتصال ناامن HTTP، و سازگاری با password managerها رو دارن. اگه این فیلد رو با یه نسخه دستساز جایگزین کنی، ممکنه همه اینها از کار بیفتن؛ بدتر اینکه اگه از یه input معمولی با ماسک دستی استفاده کنی، مرورگر یا ابزارهای کمکی ممکنه محتوای فیلد رو بهعنوان متن عادی تشخیص بدن و پسورد رو لو بدن.
برای دیتپیکر هم وضع مشابهه. المان بومی شاید برای انتخاب بازه تاریخ کافی نباشه، ولی راهحل ساده اینه که دو تا فیلد جداگانه بذاری. نویسنده میگه حاضره این قیمت کوچیک رو بپردازه تا مجبور نشه با ده تا پیادهسازی متفاوت از ده تا سایت مختلف کنار بیاد؛ بعضیهاشون برای انتخاب سال تولد باید چهل بار روی دکمه «سال قبل» کلیک کنی.
در نهایت نویسنده یه نکته کلیتر هم اضافه میکنه: تغییر مداوم رابط کاربری هم همین آسیب رو داره. شاید یه کاربر جوان بتونه با طراحی جدید سایت کنار بیاد، ولی کاربرهای مسنتر با هر بار redesign باید یه ابزار کاملاً تازه یاد بگیرن؛ بدون اینکه هیچ مزیت کارکردی واقعیای نصیبشون بشه.
نکات کلیدی:
- اصل «خودت ننویس» از امنیت، در طراحی وب هم قابل اعماله
- اسکرول، لینکناوبری، فیلد پسورد و دیتپیکر سفارشی اغلب تجربه کاربری رو خراب میکنن
- GitHub نمونه بارز override کردن ناوبری لینک با جاوااسکریپته که گاهی کندتر از رفتار پیشفرض مرورگره
- فیلد پسورد دستساز میتونه امنیت و accessibility رو به خطر بندازه
- برای دیتپیکر، ویجت سفارشی باید مکمل باشه، نه جایگزینش
- تغییر مکرر UI بار یادگیری رو روی کاربران کمتجربهتر تحمیل میکنه




