داشتم فیلمی نگاه میکردم که در آن دیالوگ زیر ردوبدل شد:
Even if you can, doesn`t mean you should
که به عنوان سوژهٔ این دلنوشته ازش استفاده کردم و دست به کیبورد شدم. اساساً در هر نوع کسبوکاری میتوان به تقابل میان «آیا میتوان فلان کار را کرد؟» و «آیا باید فلان کار را کرد؟» رسید اما آنچه در ادامه عرض میکنم در حوزهٔ توسعهٔ نرمافزار است.
برای شروع، نیمنگاهی به اِسکمای یک جدول فرضی بیندازیم که قرار هست دادههای کاربران اپلیکیشن در آن ذخیره شود:
+---------+---------+----------+--------------+------------+
| user_id | hashed_pass | plain_pass | email |
+---------+---------+----------+--------------+------------+
| 1 |7461a7b897f442b822ea|12345678 |1@gmail.com |
| 2 |fc5b442b822eab897f4d|behzadmoradi62|2@gmail.com |
| 3 |ff2b822eab897f4b897f|qazwsx |3@gmail.com |
+---------+---------+----------+--------------+------------+
همانطور که میبینیم، در جدول فوق دو ستون وجود دارد تحت عناوین hashed_pass و plain_pass که اولی مسئول ذخیرهسازی رمز عبور اِنکریپتشده هست و دومی هم بدون اینکه الگوریتم خاصی را روی پسورد انتخابی کاربر اثر بده، همونطور به صورت خام ذخیره کرده است که این کار ممکن است به چند دلیل صورت گرفته باشد:
- شاید وبمستر این سایت خواسته تا مثلاً آمار دربیارود چند درصد کاربران پسوردهای قابلحدس انتخاب میکنند!
- با توجه به اینکه عدهٔ زیادی از کاربران از پسوردی یکسان برای وب اپلیکیشنهای مختلف استفاده میکنند، شاید وبمستر این سایت خواسته تا سوءاستفاده کند!
درسته که ما به عنوان دولوپر یا وبمستر میتوانیم بدون آنکه کاربران مطلع شوند دیتای خصوصی ایشان را به صورت اِنکریپتنشده ذخیره سازیم، اما باید این کار را بکنیم؟
برای درک بهتر موضوع، مورد دیگری را بررسی کنیم. فرض کنیم وبسایتی داریم که مخاطب خاصی را به خود جلب میکند (مثلاً بانوان باردار) و طی چند سال چندین هزار کاربر در سایت ثبتنام میکنند که به نظر میرسد غالب ایشان به نوعی با بچه سروکار دارند. حال یک شرکت تبلیغاتی میآید و در ازای دریافت بانک ایمیل کاربران پول خوبی پیشنهاد میکند و نکته اینجاست که نه کاربران متوجه میشوند و نه هیچکس دیگری منتها پول خوبی به استارتاپ تزریق میشود و در اینکه این کار را میتوان کرد هیچ شکی نیست؛ اما پرسش اصلی اینجاست که آیا باید این را کرد؟
برویم سراغ مورد آخر و آن هم اینکه فرض کنیم در یک شرکت نرمافزاری با سِمت بکاِند دولوپر مشغول به کار هستیم. در حین کار روی یکی از پروژهها، یک کلاس تروتمیز مینویسیم که مثلاً ارتباط با درگاه بانک ملت رو هندل میکنه. مسلماً میتوانیم کلاس رو برداریم تا در روز مبادا اگر نیاز شد ازش در پروژههای فریلنسری خود استفاده کنیم اما پرسش کلیدی اینجاست که آیا باید این کار را بکنیم؟
جمعبندی
مغز من، به عنوان یک دولوپر، که بر این باورم همیشه تصمیم درست رو میگیره گاهی همچون یک اسب وحشیِ افسارگریخته هست که دوست داره برای صاحبش (من) سود کوتاهمدت بیاره و پیش خودش فکر میکنه که داره بهم حال میده اما موضوع به همین سادگی نیست!
آنچه گفتم فقط یک «طرح مسئله» هست و نه «نسخهای برای همگان» تا در نهایت همفکری کنیم ببنیم اَپروچ (رویکرد) درست چیست که برای این منظور در ادامه چند سؤال طرح میکنم:
- آیا توانستن انجام هر نوع کاری در نهایت از ما فردی زرنگ میسازد؟
- اگر اینطور است، آیا این زرنگی حقیرانه نیست؟
- در چند درصد وبسایتهای ایرانی و خارجی با اعتماد ٪۱۰۰ اطلاعاتی همچون ایمیل، شماره موبایل، پسورد و ... رو به اشتراک میگذارید؟
- وقتی در شرکتی استخدام میشویم و مثلاً یک فانکشن خفن مینویسیم، کپیرایت اون فانکشن مال ماست یا اون شرکت و چرا؟
- جایگاه کشور ما در مقایسه با سایر کشورها از بُعد اخلاق در بیزینس کجاست و چرا؟
ممنون که وقت گذاشتید. جای نظر، انتقاد و پیشنهاد شما در بخش کامنتینگ است.