आप autocomplete
किसी विशिष्ट input
(या form field
) के लिए प्रमुख ब्राउज़रों में कैसे अक्षम होते हैं ?
आप autocomplete
किसी विशिष्ट input
(या form field
) के लिए प्रमुख ब्राउज़रों में कैसे अक्षम होते हैं ?
जवाबों:
फ़ायरफ़ॉक्स 30 autocomplete="off"
पासवर्ड की उपेक्षा करता है, इसके बजाय उपयोगकर्ता को संकेत देने के लिए कि क्या पासवर्ड क्लाइंट पर संग्रहीत किया जाना चाहिए। 5 मई, 2014 से निम्नलिखित टिप्पणी पर ध्यान दें :
- पासवर्ड प्रबंधक हमेशा संकेत देता है कि क्या वह पासवर्ड सहेजना चाहता है। उपयोगकर्ता से अनुमति के बिना पासवर्ड सहेजे नहीं जाते हैं।
- हम IE और क्रोम के बाद इस परिवर्तन को लागू करने वाले तीसरे ब्राउज़र हैं।
मोज़िला डेवलपर नेटवर्क प्रलेखन के अनुसार , बूलियन फॉर्म एलिमेंट विशेषता autocomplete
फॉर्म डेटा को पुराने ब्राउज़रों में कैश्ड होने से रोकती है।
<input type="text" name="foo" autocomplete="off" />
इसके अलावा autocomplete=off
, आपके पास आपके फॉर्म फ़ील्ड के नाम भी कोड द्वारा यादृच्छिक हो सकते हैं जो पेज को उत्पन्न करता है, शायद नामों के अंत में कुछ सत्र-विशिष्ट स्ट्रिंग जोड़कर।
जब फॉर्म सबमिट किया जाता है, तो आप उन्हें सर्वर साइड पर प्रोसेस करने से पहले उस हिस्से को बंद कर सकते हैं। यह वेब ब्राउज़र को आपके क्षेत्र के लिए संदर्भ खोजने से रोकेगा और XSRF हमलों को रोकने में भी मदद कर सकता है क्योंकि एक हमलावर फॉर्म सबमिट करने के लिए फ़ील्ड नामों का अनुमान लगाने में सक्षम नहीं होगा।
$_SESSION['codefield_name'] = md5(uniqid('auth', true));
अधिकांश प्रमुख ब्राउज़र और पासवर्ड प्रबंधक (सही तरीके से, IMHO) अब अनदेखा करते हैं autocomplete=off
।
क्यों? कई बैंकों और अन्य "उच्च सुरक्षा" वेबसाइटों ने autocomplete=off
अपने लॉगिन पृष्ठों में "सुरक्षा उद्देश्यों के लिए" जोड़ा, लेकिन यह वास्तव में सुरक्षा कम हो जाती है क्योंकि इससे लोगों को स्वत: पूर्ण होने के बाद से इन उच्च-सुरक्षा साइटों पर पासवर्ड बदलने में आसानी होती है (और इस प्रकार दरार) याद रखना आसान होता है टूट गया।
बहुत पहले ज्यादातर पासवर्ड मैनेजरों ने नजरअंदाज करना शुरू कर दिया था autocomplete=off
, और अब ब्राउज़र केवल उपयोगकर्ता नाम / पासवर्ड इनपुट के लिए ऐसा करना शुरू कर रहे हैं।
दुर्भाग्य से, स्वत: पूर्ण कार्यान्वयन में बग उपयोगकर्ता नाम और / या पासवर्ड की जानकारी अनुचित रूप से फ़ील्ड में डालते हैं, जिससे प्रपत्र सत्यापन त्रुटियां होती हैं, या इससे भी बदतर, गलती से उपयोगकर्ता नाम फ़ील्ड में सम्मिलित करते हैं जो उपयोगकर्ता द्वारा जानबूझकर खाली छोड़ दिया गया था।
वेब डेवलपर क्या करना है?
Chrome 34, दुर्भाग्य से, जब भी यह पासवर्ड फ़ील्ड देखता है, तो उपयोगकर्ता / पास के साथ फ़ील्ड को ऑटोफ़िल करने का प्रयास करेगा। यह काफी बुरा बग है कि उम्मीद है, वे सफारी व्यवहार को बदल देंगे। हालाँकि, अपने फ़ॉर्म के शीर्ष पर इसे जोड़ने से लगता है कि पासवर्ड ऑटोफिल को निष्क्रिय कर सकता है:
<input type="text" style="display:none">
<input type="password" style="display:none">
मैंने अभी तक IE या फ़ायरफ़ॉक्स की पूरी तरह से जांच नहीं की है, लेकिन दूसरों को टिप्पणियों में जानकारी होने पर उत्तर को अपडेट करने में खुशी होगी।
type='password'
एक पृष्ठ पर दो फ़ील्ड बनाने से ब्राउज़र के "सेव पासवर्ड" को स्वत: ही अनदेखा किया जा सकता है, जिससे पूरी तरह से समझ में आता है क्योंकि पंजीकरण फॉर्म दो बार पासवर्ड मांगते हैं, जब लॉगिन फॉर्म केवल एक बार मांगते हैं।
कभी कभी भी स्वत: पूर्ण बंद = होगा भरने के लिए नहीं रोका जा गलत क्षेत्रों में साख में नहीं, बल्कि उपयोगकर्ता या उपनाम क्षेत्र।
यह वर्कअराउंड ब्राउज़र व्यवहार के बारे में एपिंस्टीन के पोस्ट के अलावा है।
केवल पढ़ने के लिए ब्राउज़र ऑटोफ़िल को ठीक करें और फ़ोकस पर ध्यान केंद्रित करें (क्लिक करें और टैब)
<input type="password" readonly
onfocus="this.removeAttribute('readonly');"/>
अपडेट: मोबाइल सफारी क्षेत्र में कर्सर सेट करता है, लेकिन वर्चुअल कीबोर्ड नहीं दिखाता है। नया फिक्स पहले की तरह काम करता है लेकिन वर्चुअल कीबोर्ड को संभालता है:
<input id="email" readonly type="email" onfocus="if (this.hasAttribute('readonly')) {
this.removeAttribute('readonly');
// fix for mobile safari to show virtual keyboard
this.blur(); this.focus(); }" />
लाइव डेमो https://jsfiddle.net/danielsuess/n0scguv6/
// अपडेट
क्योंकि ब्राउज़र ऑटो गलत पाठ क्षेत्र में साख भरता है !?
मैं क्रोम और सफारी पर इस अजीब व्यवहार को नोटिस करता हूं, जब एक ही रूप में पासवर्ड फ़ील्ड होते हैं । मुझे लगता है, ब्राउज़र आपके सहेजे गए क्रेडेंशियल्स सम्मिलित करने के लिए एक पासवर्ड फ़ील्ड की तलाश करता है। तब यह ऑटो भरता है (केवल अवलोकन के कारण अनुमान लगाता है) निकटतम पाठ-इनपुट क्षेत्र, जो DOM में पासवर्ड फ़ील्ड से पहले दिखाई देता है। चूंकि ब्राउज़र अंतिम उदाहरण है और आप इसे नियंत्रित नहीं कर सकते,
ऊपर पढ़ा गया यह मेरे लिए काम करता है।
readonly
हटा दिया जाता है, बाद में फ़ील्ड का चयन स्वतः पूर्ण होने के परिणामस्वरूप होता है।
<form name="form1" id="form1" method="post"
autocomplete="off" action="http://www.example.com/form.cgi">
यह Internet Explorer और Mozilla FireFox में काम करेगा, नकारात्मक पक्ष यह है कि यह XHTML मानक नहीं है।
input type="password"
। उम्मीद है कि कोई अन्य ब्राउज़र इस कार्यक्षमता को हटाने का चयन नहीं करता है।
autocomplete="off"
पर form
केवल बात यह है कि क्रोम के लिए काम किया है।
Chrome का समाधान autocomplete="new-password"
इनपुट प्रकार के पासवर्ड में जोड़ना है। कृपया नीचे दिए गए उदाहरण की जाँच करें।
उदाहरण:
<form name="myForm"" method="post">
<input name="user" type="text" />
<input name="pass" type="password" autocomplete="new-password" />
<input type="submit">
</form>
Chrome हमेशा डेटा को स्वत: पूर्ण करता है यदि उसे एक प्रकार का पासवर्ड मिल जाता है , तो बस उस बॉक्स को इंगित करने के लिए पर्याप्त है autocomplete = "new-password"
।
यह मेरे लिए अच्छा काम करता है।
नोट: यह सुनिश्चित करें F12
कि आपके परिवर्तन प्रभावी हों, कई बार ब्राउज़र कैश में पेज को सहेजते हैं, इससे मुझे एक बुरा आभास हुआ कि यह काम नहीं किया, लेकिन ब्राउज़र वास्तव में बदलाव नहीं लाया।
जैसा कि दूसरों ने कहा है, इसका उत्तर है autocomplete="off"
हालाँकि, मुझे लगता है कि यह बताने के लायक है कि कुछ मामलों में इसका उपयोग करना एक अच्छा विचार है क्योंकि कुछ उत्तरों और डुप्लिकेट प्रश्नों ने सुझाव दिया है कि इसे बंद न करना बेहतर है।
क्रेडिट कार्ड नंबर संग्रहीत करने वाले ब्राउज़र को रोकना उपयोगकर्ताओं को नहीं छोड़ा जाना चाहिए। बहुत से उपयोगकर्ताओं को यह भी एहसास नहीं होगा कि यह एक समस्या है।
क्रेडिट कार्ड सुरक्षा कोड के लिए इसे खेतों में बंद करना विशेष रूप से महत्वपूर्ण है। जैसा कि यह पृष्ठ बताता है:
"सुरक्षा कोड को कभी संग्रहीत न करें ... इसका मूल्य अनुमान पर निर्भर करता है कि इसे आपूर्ति करने का एकमात्र तरीका भौतिक क्रेडिट कार्ड से इसे पढ़ना है, यह साबित करता है कि आपूर्ति करने वाला व्यक्ति वास्तव में कार्ड रखता है।"
समस्या यह है, अगर यह एक सार्वजनिक कंप्यूटर (साइबर कैफे, लाइब्रेरी आदि) है तो अन्य उपयोगकर्ताओं के लिए आपके कार्ड के विवरण को चोरी करना आसान है, और यहां तक कि आपकी खुद की मशीन पर भी एक दुर्भावनापूर्ण वेबसाइट स्वतःपूर्ण डेटा चोरी कर सकती है ।
मैंने यादृच्छिक अक्षरों के उपयोग के साथ Google Chrome के साथ अंतहीन लड़ाई को हल किया है। जब आप हमेशा यादृच्छिक स्ट्रिंग के साथ स्वत: पूर्णता प्रदान करते हैं, तो यह कभी भी कुछ भी याद नहीं रखेगा।
<input name="name" type="text" autocomplete="rutjfkde">
आशा है कि यह अन्य लोगों को मदद करेगा।
autocompleteoff
अपने इच्छित इनपुट क्षेत्र में वर्ग जोड़ सकते हैं ।
मुझे उन उत्तरों के साथ अलग-अलग भीख माँगनी होगी जो ऑटो-पूर्ण को अक्षम करने से बचने के लिए कहते हैं।
पहली बात यह है कि लॉगिन फॉर्म फ़ील्ड पर स्पष्ट रूप से अक्षम नहीं किया जा रहा ऑटो-पीएसआई विफल है। इसके अलावा, यदि उपयोगकर्ताओं की स्थानीय मशीन से छेड़छाड़ की जाती है, तो किसी भी स्वत: पूर्ण डेटा को स्पष्ट रूप से संग्रहीत होने के कारण किसी हमलावर द्वारा प्राप्त किया जा सकता है।
प्रयोज्य के लिए निश्चित रूप से एक तर्क है, हालांकि यह बहुत ही अच्छा संतुलन है जब यह आता है कि किस रूप में फ़ील्ड को स्वत: पूर्ण अक्षम होना चाहिए और जो नहीं करना चाहिए।
तीन विकल्प: पहला:
<input type='text' autocomplete='off' />
दूसरा:
<form action='' autocomplete='off'>
तीसरा (जावास्क्रिप्ट कोड):
$('input').attr('autocomplete', 'off');
संबंधित या वास्तव में, पूरी तरह से विपरीत नोट पर -
"यदि आप उपर्युक्त फ़ॉर्म के उपयोगकर्ता हैं और स्वत: पूर्ण कार्यक्षमता को फिर से सक्षम करना चाहते हैं, तो इस बुकमार्कलेट पृष्ठ से 'याद रखें पासवर्ड' बुकमार्कलेट का उपयोग करें । यह
autocomplete="off"
पृष्ठ पर सभी रूपों से सभी विशेषताओं को हटा देता है । अच्छी लड़ाई लड़ते रहें! "
हम वास्तव में एक साइट के लिए sasb के विचार का उपयोग करते हैं । यह एक डॉक्टर के कार्यालय को चलाने के लिए एक मेडिकल सॉफ्टवेयर वेब ऐप था। हालांकि, हमारे कई ग्राहक सर्जन थे जिन्होंने अर्ध-सार्वजनिक टर्मिनलों सहित विभिन्न कार्यस्थलों का बहुत उपयोग किया था। इसलिए, वे यह सुनिश्चित करना चाहते थे कि एक डॉक्टर जो ऑटो-सहेजे गए पासवर्ड के निहितार्थ को नहीं समझता है या ध्यान नहीं दे रहा है, गलती से अपनी लॉगिन जानकारी को आसानी से सुलभ नहीं छोड़ सकता है। बेशक, यह निजी ब्राउज़िंग के विचार से पहले था जो IE8, FF3.1 आदि में प्रदर्शित होना शुरू हो रहा है। यहां तक कि कई चिकित्सकों को आईटी के साथ अस्पतालों में पुराने स्कूल ब्राउज़रों का उपयोग करने के लिए मजबूर किया जाता है जो बदले नहीं जाएंगे।
इसलिए, हमारे पास लॉगिन पृष्ठ यादृच्छिक क्षेत्र नाम उत्पन्न करता है जो केवल उस पोस्ट के लिए काम करेगा। हां, यह कम सुविधाजनक है, लेकिन यह केवल सार्वजनिक टर्मिनलों पर लॉगिन जानकारी संग्रहीत नहीं करने के बारे में उपयोगकर्ता को सिर पर मार रहा है।
इस बातचीत में मेरे लिए कोई भी समाधान काम नहीं आया।
मैंने आखिर में एक शुद्ध HTML समाधान निकाला, जिसमें कोई जावास्क्रिप्ट की आवश्यकता नहीं है , आधुनिक ब्राउज़रों में काम करता है (IE को छोड़कर; कम से कम 1 कैच, राइट?) करना था, और आपको पूरे फॉर्म के लिए स्वत: पूर्ण अक्षम करने की आवश्यकता नहीं है।
बस स्वत: पूर्ण को बंद करें form
और फिर इसे चालू करें जो input
आप चाहते हैं कि यह फ़ॉर्म के भीतर काम करे। उदाहरण के लिए:
<form autocomplete="off">
<!-- these inputs will not allow autocomplete and chrome
won't highlight them yellow! -->
<input name="username" />
<input name="password" type="password" />
<!-- this field will allow autocomplete to work even
though we've disabled it on the form -->
<input name="another_field" autocomplete="on" />
</form>
बस सेट autocomplete="off"
। ऐसा करने का एक बहुत अच्छा कारण है: आप अपनी स्वयं की कार्यक्षमता प्रदान करना चाहते हैं!
मैं अंतहीन समाधान की कोशिश कर रहा हूं, और फिर मुझे यह मिला:
इसके बजाय autocomplete="off"
बस का उपयोग करेंautocomplete="false"
जैसा कि सरल है, और यह Google Chrome में भी एक आकर्षण की तरह काम करता है!
यह मेरे लिए काम करता है।
<input name="pass" type="password" autocomplete="new-password" />
हम इस रणनीति का उपयोग अन्य नियंत्रणों जैसे पाठ, चयन आदि में भी कर सकते हैं
मुझे लगता autocomplete=off
है कि HTML 5 में समर्थित है।
अपने आप से पूछें कि आप ऐसा क्यों करना चाहते हैं - यह कुछ स्थितियों में समझ में आ सकता है लेकिन इसे करने के लिए बस ऐसा न करें।
यह उपयोगकर्ताओं के लिए कम सुविधाजनक है और OS X में सिक्योरिटी इश्यू (नीचे सोरेन द्वारा उल्लिखित) भी नहीं है। यदि आप उन लोगों के बारे में चिंतित हैं जो अपने पासवर्ड को दूरस्थ रूप से चुराते हैं - एक कीस्ट्रोक लकड़हारा तब भी ऐसा कर सकता है, भले ही आपका ऐप उपयोग करता होautcomplete=off
।
एक उपयोगकर्ता के रूप में जो मेरी जानकारी को एक ब्राउज़र याद रखना चाहता है (अधिकांश), मुझे लगता है कि अगर आपकी साइट मुझे याद नहीं है तो मुझे यह कष्टप्रद लगेगा।
के अतिरिक्त
autocomplete="off"
उपयोग
readonly onfocus="this.removeAttribute('readonly');"
इनपुट के लिए आप उन्हें प्रपत्र डेटा (याद नहीं करना चाहती है कि username
, password
जैसा कि नीचे दिखाया, आदि):
<input type="text" name="UserName" autocomplete="off" readonly
onfocus="this.removeAttribute('readonly');" >
<input type="password" name="Password" autocomplete="off" readonly
onfocus="this.removeAttribute('readonly');" >
उम्मीद है की यह मदद करेगा।
$(document).on('focus', 'input:password[readonly="readonly"]', function () { $(this).prop('readonly', false).blur().focus(); });
onfocusout="this.setAttribute('readonly', 'readonly');"
सबसे अच्छा समाधान:
स्वत: पूर्ण उपयोगकर्ता नाम (या ईमेल) और पासवर्ड रोकें:
<input type="email" name="email"><!-- Can be type="text" -->
<input type="password" name="password" autocomplete="new-password">
स्वत: पूर्ण फ़ील्ड को रोकें:
<input type="text" name="field" autocomplete="nope">
स्पष्टीकरण:
autocomplete
काम जारी रखता है <input>
, autocomplete="off"
काम नहीं करता है, लेकिन आप off
एक यादृच्छिक स्ट्रिंग में बदल सकते हैं , जैसे nope
।
काम में:
क्रोम: 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 और 64
फ़ायरफ़ॉक्स: 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 और 58
autocomplete
विशेषता के लिए स्ट्रिंग मान सेट करने की कोशिश की है और यह अभी भी इनपुट के तहत स्वत: पूर्ण सुझावों के रूप में पिछली प्रविष्टियाँ प्रदर्शित करता है।
autocomplete
, मुझे अभी भी पहले से दर्ज मानों के आधार पर एक सुझाव ड्रॉपडाउन मिलता है। यह डेस्कटॉप पर ठीक है, लेकिन एंड्रॉइड क्रोम पर नहीं।
खेल में थोड़ी देर ... लेकिन मैं अभी इस समस्या में भाग गया और कई विफलताओं की कोशिश की, लेकिन मेरे लिए यह एक काम एमडीएन पर मिला
कुछ स्थिति में, ब्राउज़र स्वत: पूर्णता मानों का सुझाव देता रहेगा भले ही स्वत: पूर्ण विशेषता बंद हो जाए। यह अप्रत्याशित व्यवहार डेवलपर्स के लिए काफी हैरान करने वाला हो सकता है। वास्तव में नो-पूरा करने के लिए बाध्य करने की चाल इस तरह की विशेषता के लिए एक यादृच्छिक स्ट्रिंग असाइन करना है:
autocomplete="nope"
जोड़ने autocomplete="off"
वाला इसे काटने वाला नहीं है।
करने के लिए इनपुट प्रकार विशेषता बदलें type="search"
।
Google एक प्रकार की खोज के साथ इनपुट के लिए ऑटो-फिल लागू नहीं करता है।
खेतों के लिए एक गैर-मानक नाम और आईडी का उपयोग करें, इसलिए "नाम" के बजाय "नाम_" है। ब्राउज़र तब इसे नाम फ़ील्ड के रूप में नहीं देखेगा। इसके बारे में सबसे अच्छी बात यह है कि आप इसे कुछ क्षेत्रों में नहीं बल्कि सभी क्षेत्रों में कर सकते हैं और यह कुछ क्षेत्रों को नहीं बल्कि कुछ को स्वत: पूर्ण करेगा।
अमान्य XHTML से बचने के लिए आप जावास्क्रिप्ट का उपयोग करके इस विशेषता को सेट कर सकते हैं। JQuery का उपयोग करके उदाहरण:
<input type="text" class="noAutoComplete" ... />
$(function() {
$('.noAutoComplete').attr('autocomplete', 'off');
});
समस्या यह है कि जावास्क्रिप्ट के बिना उपयोगकर्ता स्वत: पूर्ण कार्यक्षमता प्राप्त करेंगे।
मुझे विश्वास नहीं हो रहा है कि यह रिपोर्ट किए जाने के बाद भी यह एक मुद्दा है। उपरोक्त समाधान मेरे लिए कारगर नहीं थे, क्योंकि सफारी को पता था कि तत्व प्रदर्शित नहीं किया गया था या ऑफ-स्क्रीन, हालांकि निम्नलिखित ने इसके लिए कोई काम नहीं किया:
<div style="height:0px; overflow:hidden; ">
Username <input type="text" name="fake_safari_username" >
Password <input type="password" name="fake_safari_password">
</div>
आशा है कि किसी के लिए उपयोगी है!
तो यहाँ है:
function turnOnPasswordStyle() {
$('#inputpassword').attr('type', "password");
}
<input oninput="turnOnPasswordStyle()" id="inputpassword" type="text">
यह एक सुरक्षा समस्या है जिसे ब्राउज़र अब अनदेखा कर देते हैं। ब्राउज़र इनपुट नामों का उपयोग करके सामग्री की पहचान करते हैं और संग्रहीत करते हैं, भले ही डेवलपर्स को लगता है कि जानकारी संवेदनशील है और इसे संग्रहीत नहीं किया जाना चाहिए। 2 अनुरोधों के बीच एक इनपुट नाम अलग करने से समस्या का समाधान हो जाएगा (लेकिन फिर भी ब्राउज़र के कैश में सहेजा जाएगा और ब्राउज़र का कैश भी बढ़ाएगा)। उपयोगकर्ता से पूछें कि उसके ब्राउज़र की सेटिंग्स में विकल्पों को सक्रिय या निष्क्रिय करना एक अच्छा समाधान नहीं है। मुद्दा बैकएंड में तय किया जा सकता है।
यहाँ मेरा फिक्स है। एक दृष्टिकोण जो मैंने अपने ढांचे में लागू किया है। सभी स्वत: पूर्ण तत्व इस तरह एक छिपे हुए इनपुट के साथ उत्पन्न होते हैं:
<? $r = rmd5(rand().mocrotime(TRUE)); ?>
<form method="POST" action="./">
<input type="text" name="<? echo $r; ?>" />
<input type="hidden" name="__autocomplete_fix_<? echo $r; ?>" value="username" />
<input type="submit" name="submit" value="submit" />
</form>
सर्वर तो इस तरह पोस्ट चर की प्रक्रिया:
foreach ($_POST as $key => $val)
{
if(preg_match('#^__autocomplete_fix_#', $key) === 1){
$n = substr($key, 19);
if(isset($_POST[$n]))$_POST[$val] = $_POST[$n];
}
}
मान को हमेशा की तरह एक्सेस किया जा सकता है
var_dump($_POST['username']);
और ब्राउज़र पिछले अनुरोध या पिछले उपयोगकर्ताओं से जानकारी का सुझाव देने में सक्षम नहीं होगा।
सभी एक आकर्षण की तरह काम करते हैं, भले ही ब्राउजर अपडेट हो, स्वत: पूर्णता को अनदेखा करना चाहते हैं या नहीं। मेरे लिए इस मुद्दे को ठीक करने का यह सबसे अच्छा तरीका है।
यहां बताई गई किसी भी हैक ने मेरे लिए क्रोम में काम नहीं किया। यहाँ इस मुद्दे की चर्चा है: https://code.google.com/p/chromium/issues/detail?id=46815##c41
इसे किसी <form>
कार्य के अंदर जोड़ना (कम से कम अभी के लिए):
<div style="display: none;">
<input type="text" id="PreventChromeAutocomplete" name="PreventChromeAutocomplete" autocomplete="address-level4" />
</div>
maxlength="0"
से फ़ायरफ़ॉक्स को क्षेत्र को स्वतःभरण से रोका जा सकता है।