السلام عليكم ، أثناء فحصي لجهاز التوجيه Router من إصدار شركة Huawei بهدف بعض عمليات الأتمتة ، اكتشفت أنك عندما تحاول تسجيل الدخول تقوم الصفحة بإرسال Request للـ Mini web server المدمج في الراوتر ، ويحتوي على بعض البيانات منها CSRF token و CSRF parameter واسم المستخدم ، وكلمة المرور لكن مشفرة ...

عندما بحثت عن الدالة المسئولة عن تشفير كلمة المرور وجدتها في ملف Javascript وبطبيعة الحال هذا الملف متاح للمستخدم بمجرد فتح صفحة الويب ، تلك هي طريقة التشفير:

var plaintPwd = this.content.get("UserName") + base64Encode(SHA256(this.content.get("Password"))) + csrf_obj.csrf_param + csrf_obj.csrf_token;
post_data["data"]["Password"] = SHA256(plaintPwd);

هذه هي الدوال المصممة خصيصا للتشفير ->

كما تلاحظون ، يتم التشفير على أربع مراحل:

1- يتم تشفير كلمة المرور باستخدام دالة SHA256

2- يتم تشفير الناتج السابق عن طريق دالة base64Encode

3 - يتم إضافة اسم المستخدم (غالبا admin) مع الناتج السابق وإضافة ناتج الدمج إلى اثنين من CSRF tokens يتم توليدهم بشكل عشوائي بمجرد تحميل الصفحة.

4- يتم تشفير الناتج السابق بواسطة SHA256 مرة أخرى

السؤال هو ، لماذا كل هذا الصداع ، ألم يكن من الممكن استخدام خوارزميات جاهزة ومعروفة مثل SHA256 مثلا واستخدامها مع كلمة المرور فقط (أعتقد جافا سكربت مليئة بالمكتبات المختصة بالتشفير) ؟؟

أنا لم أستطع قراءة الدوال جيدا ، لكن أليس استخدام تلك الطريقة يعد Over Engineering ؟