خاصية maxlength في حقل كلمة المرور منعت مستخدمًا من دخول حسابه في Vanguard
أي تحقق يُكتب في الـ HTML وحده يعمل على النص بعد أن يغيّره المتصفح، لا على ما أدخله المستخدم، ولهذا يمر هذا النوع من الأخطاء من كل الاختبارات الآلية.
نشر المطور Tanin Na Nakorn يوم 3 أكتوبر 2026 قصة عجزه عن دخول حسابه في موقع Vanguard، رغم أنه يستخدم كلمة المرور الصحيحة.
والسبب سطر واحد في صفحة تغيير كلمة المرور:
<input type="password" maxlength="20">
وصفحة تسجيل الدخول لم تحتوِ على هذا القيد.
وتسلسل ما حدث بسيط. ولّد مدير كلمات المرور كلمة من 26 حرفًا، ولُصقت في صفحة التغيير. فأخذ المتصفح أول 20 حرفًا فقط وتجاهل الباقي، دون رسالة أو تحذير، وحُفظت الكلمة المقصوصة. ثم لُصقت الكلمة نفسها في صفحة الدخول، فأُرسلت كاملة بأحرفها الـ 26. فالصفحتان تعملان كما كُتبتا، لكن الكلمة المحفوظة تختلف عن الكلمة المرسلة، والمستخدم لا يعرف أنه يجرّب كلمة لم تُحفظ أصلًا.
والنقطة الجوهرية أن خاصية maxlength ليست تحققًا من صحة المدخلات، بل قص صامت يجريه المتصفح. والقاعدة أوسع من كلمات المرور: أي تحقق يوضع في الـ HTML وحده يعمل على النص بعد أن يغيّره المتصفح، لا على النص الذي أدخله المستخدم. ولهذا يرى صاحب التدوينة أن التحقق عبر JavaScript أو على الـ backend أفضل، لأنه يرى ما أرسله المستخدم فعلًا ويستطيع رفضه برسالة واضحة.
ويصعب اكتشاف هذا النوع من الأخطاء بالاختبارات الآلية، لأن الـ test يرسل النص إلى الخادم مباشرة ولا يمر عبر المتصفح الذي يقص النص.
ومع انتشار مديري كلمات المرور التي تولّد كلمات طويلة تلقائيًا، يصبح أي حد قصير في صفحة واحدة دون الأخرى سببًا لإغلاق حسابات مستخدمين يتبعون الممارسة الأكثر أمانًا. وتوصي إرشادات NIST في دليل SP 800-63B بعدم وضع سقف قصير لطول كلمات المرور.