[Firefox] كيف يعرف المتصفح متى يطلب من المستخدم حفظ كلمة المرور؟


Answers

واجهت نفس المشكلة ووجدت حلاً:

  1. لجعل المتصفح يطلب تخزين كلمة المرور ، يجب أن يكون اسم المستخدم وكلمة المرور مربعات في شكل ويجب تقديم هذا النموذج في الواقع. قد يرسل الزر إرسال false من معالج onclick (لذلك لا يحدث الإرسال بالفعل).

  2. لجعل المتصفح يقوم باستعادة كلمة المرور المخزنة مسبقًا ، يجب أن تكون مربعات الإدخال موجودة في نموذج HTML الرئيسي ولا يتم إنشاؤها من خلال javascript بشكل ديناميكي. يمكن إنشاء النموذج مع العرض: لا شيء.

من الضروري ملاحظة أن كلمة المرور مملوءة فور تحميل الصفحة وهي موجودة هناك خلال الجلسة بأكملها ، بحيث يمكن قراءتها بواسطة جافا سكريبت المحقون: فهي تجعل مثل هذه الهجمات أسوأ بكثير. لتجنب هذا ، فإن إعادة التوجيه إلى صفحة منفصلة فقط لتسجيل الدخول أمر معقول ، كما أنه يحل جميع المشاكل التي بدأت في قراءتها لهذا الموضوع :). كحل جزئي ، أقوم بإزالة الحقول عند إرسال النموذج - إذا قام المستخدم بتسجيل الخروج وتريد تسجيل الدخول مرة أخرى ، لا يتم ملء كلمة المرور من قبل المتصفح ، ولكن هذا الأمر بسيط بالنسبة لي.

Viliam

Question

هذا متعلق بالسؤال الذي طرحته هنا: كيف يمكنني الحصول على المتصفح للمطالبة بحفظ كلمة المرور؟

هذه هي المشكلة: يتعذر عليّ الحصول على المتصفح الخاص بي ليحفظ كلمة المرور للموقع الذي أعمل على تطويره. (أنا أتحدث عن الشريط الذي يظهر أحيانًا عند إرسال نموذج على Firefox ، والذي ينص على "تذكر كلمة المرور لموقع yoursite.com؟ نعم / ليس الآن / أبدًا")

هذا محبط للغاية لأن هذه الميزة من فايرفوكس (ومعظم المتصفحات الحديثة الأخرى ، التي آمل العمل بطريقة مماثلة) تبدو لغزا. إنها تشبه خدعة سحرية يفعلها المتصفح ، حيث ينظر إلى شفرتك ، أو ما ترسله ، أو شيء ما ، وإذا كان "يبدو" مثل نموذج تسجيل الدخول مع حقل اسم المستخدم (أو عنوان البريد الإلكتروني) وحقل كلمة المرور ، فإنه يقدم للحفظ.

ما عدا في هذه الحالة ، حيث لا تقدم للمستخدمين هذا الخيار بعد استخدام نموذج تسجيل الدخول الخاص بي ، وهذا يجعلني صامتين. :-)

(لقد تحققت من إعدادات Firefox - لم أخبر المتصفح "أبدًا" عن هذا الموقع. يجب أن يكون مطلوبًا.)

سؤالي

ما هي الأساليب البحثية التي يستخدمها فايرفوكس لمعرفة متى يجب أن يدفع المستخدم إلى الحفظ؟ لا ينبغي أن يكون هذا صعبًا جدًا ، لأنه موجود في مصدر Mozilla (لا أعرف أين أجد ، وإلا سأحاول أن أحفره بنفسي). كما أنني لم أجد حظًا في العثور على مشاركة مدونة أو ملاحظة أخرى مشابهة من مطوري موزيلا حول هذا الموضوع.

(سأكون على ما يرام مع الإجابة على هذا السؤال لسفاري أو IE ؛ أتخيل أن جميع المتصفحات تستخدم قواعد متشابهة جدًا ، لذا إذا تمكنت من تشغيلها في أحدها ، فسوف تعمل في الآخرين.)

(* لاحظ أنه إذا كانت إجابتك بالنسبة لي لها أي علاقة بالكوكيز أو التشفير أو أي شيء آخر يتعلق بكيفية تخزين كلمات المرور في قاعدة البيانات المحلية الخاصة بي ، فإن الاحتمالات قوية أنك قد أساءت فهم سؤالي. :-)




حسنا ، على موقعنا ، حقل نموذج مع اسم "اسم المستخدم" نوع "النص" يليه مباشرة حقل مع اسم "كلمة المرور" ونوع "كلمة المرور" يبدو أن تفعل الخدعة.




يبدو أن هذا يعمل مع Firefox و Chrome و Safari على Mac. لم تختبر على ويندوز.

<form id="bridgeForm" action="#" target="loginframe" autocomplete="on">
    <input type="text" name="username" id="username" />
    <input type="password" name="password" id="password"/>
</form>

<iframe id="loginframe" name="loginframe" src="anyblankpage.html"></iframe>

هذا يحتاج إلى أن يضاف إلى الصفحة. لا يمكن إضافته بشكل ديناميكي. يمكن تعيين النموذج و iframe ليتم عرضه: لا شيء. إذا لم تقم بتعيين src لإطار iframe ، فلن تظهر المطالبة حتى تقوم بإرسال النموذج مرة واحدة على الأقل.

ثم أرسل نموذج الاستدعاء ():

bridgeForm.submit();

قد يكون الإجراء اختياريًا وقد تكون ميزة الإكمال التلقائي اختيارية. لم تختبر.

ملاحظة : في بعض المتصفحات ، يجب تشغيل النموذج على خادم (وليس المضيف المحلي وليس نظام الملفات) قبل أن يستجيب المتصفح.

إذا هذا:

http://www.mysite.com/myPage.html

ليس هذا:

http://126.0.0.1/myPage.html
http://localhost/myPage.html
file://directory/myPage.html




لاحظت أيضًا أن Chrome لن يعرض تذكر كلمة مرور إذا كان نموذج تسجيل الدخول لا يزال موجودًا بعد طلب تسجيل الدخول ، حتى إذا كان مخفيًا على الصفحة.

أعتقد أنه يعتقد أن إجراء تسجيل الدخول فشل وبالتالي رفض تخزين بيانات الاعتماد غير الصالحة.

شوهد على Chrome 34.0.




بالإضافة إلى الكثير الذي قيل بالفعل أدركت أن حقول الإدخال يجب ألا تكون "مُعطلة". كان لدينا تسجيل دخول متعدد الخطوات يسأل أولاً عن اسم المستخدم ومن ثم ، على الشاشة التالية ، لكلمة المرور. على الشاشة الثانية ، كررنا البريد الإلكتروني ولكن تم تعطيله وحظرنا Chrome et. الله. من الاعتراف كحقل صالح لاسم المستخدم.

نظرًا لأننا أردنا حقًا الحفاظ على حقل الإدخال المعطل ، فقد انتهى الأمر بهذا الحل البديل:

<input type="text" name="display-username" id="display-username" value="ENTERED_USERNAME" placeholder="Username" disabled="disabled">
<input type="text" name="username" id="username" value="ENTERED_USERNAME" placeholder="Username" style="display: none;">
<input type="password" name="password" id="password" value="" autofocus="autofocus" autocomplete="on" placeholder="Password" required="required">

لن أذهب إلى هذا الحد لأوصي بهذا ولكن ربما يشير إلى شخص ما إلى شيء في الكود الخاص به:

  1. يعرض العنصر الأول اسم المستخدم في حقل إدخال معطل. لا يتم إرسال المعاقين كجزء من النموذج ولا يتم التعرف على التعطيل بواسطة المتصفح.
  2. العنصر الثاني هو حقل إدخال مناسب ، مع type = "text" و name / id = "username". يتم التعرف على هذا من خلال المتصفح. من أجل منع المستخدم من التحرير ، نخفيه باستخدام CSS (عرض: لا يوجد).






Links