ฉันจำได้ว่าเห็นวิธีการ<input type="password" />
ที่เบราว์เซอร์จะไม่แจ้งให้ผู้ใช้บันทึกรหัสผ่าน แต่ฉันกำลังวาดภาพว่างเปล่า มีแอตทริบิวต์ HTML หรือเคล็ดลับ JavaScript ที่จะทำสิ่งนี้หรือไม่?
ฉันจำได้ว่าเห็นวิธีการ<input type="password" />
ที่เบราว์เซอร์จะไม่แจ้งให้ผู้ใช้บันทึกรหัสผ่าน แต่ฉันกำลังวาดภาพว่างเปล่า มีแอตทริบิวต์ HTML หรือเคล็ดลับ JavaScript ที่จะทำสิ่งนี้หรือไม่?
คำตอบ:
ลองใช้autocomplete="off"
. ไม่แน่ใจว่าทุกเบราว์เซอร์รองรับหรือไม่ เอกสาร MSDN ที่นี่
แก้ไข : หมายเหตุ: เบราว์เซอร์ส่วนใหญ่เลิกรองรับแอตทริบิวต์นี้ โปรดดูที่การเติมข้อความอัตโนมัติ = "ปิด" เข้ากันได้กับเบราว์เซอร์สมัยใหม่ทั้งหมดหรือไม่
นี่เป็นเนื้อหาที่ควรให้กับผู้ใช้มากกว่าผู้ออกแบบเว็บไซต์
<input type="password" autocomplete="off" />
ฉันแค่อยากจะเพิ่มว่าในฐานะผู้ใช้ฉันคิดว่าสิ่งนี้น่ารำคาญมากและเป็นเรื่องยุ่งยากที่จะเอาชนะ เราไม่แนะนำให้ใช้สิ่งนี้เนื่องจากจะเป็นการซ้ำเติมผู้ใช้ของคุณมากกว่า
รหัสผ่านไม่ได้ถูกเก็บไว้ใน MRU และเครื่องสาธารณะที่กำหนดค่าอย่างถูกต้องจะไม่บันทึกชื่อผู้ใช้ด้วยซ้ำ
ฉันแก้ด้วยวิธีอื่น คุณสามารถลองสิ่งนี้
<input id="passfld" type="text" autocomplete="off" />
<script type="text/javascript">
// Using jQuery
$(function(){
setTimeout(function(){
$("input#passfld").attr("type","password");
},10);
});
// or in pure javascript
window.onload=function(){
setTimeout(function(){
document.getElementById('passfld').type = 'password';
},10);
}
</script>
# อีกทางหนึ่ง
<script type="text/javascript">
function setAutoCompleteOFF(tm){
if(typeof tm =="undefined"){tm=10;}
try{
var inputs=$(".auto-complete-off,input[autocomplete=off]");
setTimeout(function(){
inputs.each(function(){
var old_value=$(this).attr("value");
var thisobj=$(this);
setTimeout(function(){
thisobj.removeClass("auto-complete-off").addClass("auto-complete-off-processed");
thisobj.val(old_value);
},tm);
});
},tm);
}catch(e){}
}
$(function(){
setAutoCompleteOFF();
});
</script>
// คุณต้องเพิ่มแอตทริบิวต์การเติมข้อความอัตโนมัติ = "off" หรือคุณสามารถเพิ่ม class .auto-complete-off ลงในช่องป้อนข้อมูลและเพลิดเพลินกับ
ตัวอย่าง:
<input id="passfld" type="password" autocomplete="off" />
OR
<input id="passfld" class="auto-complete-off" type="password" />
ฉันลองทำสิ่งต่อไปนี้และดูเหมือนว่าจะใช้ได้กับเบราว์เซอร์ใด ๆ :
<input id="passfld" type="text" autocomplete="off" />
<script type="text/javascript">
$(function(){
var passElem = $("input#passfld");
passElem.focus(function() {
passElem.prop("type", "password");
});
});
</script>
วิธีนี้ปลอดภัยกว่าการใช้เทคนิคการหมดเวลามากเนื่องจากเป็นการรับประกันว่าช่องป้อนข้อมูลจะยอมให้รหัสผ่านเมื่อผู้ใช้โฟกัส
สำหรับปัญหาด้านความปลอดภัยนี่คือสิ่งที่ที่ปรึกษาด้านความปลอดภัยจะแจ้งให้คุณทราบเกี่ยวกับปัญหาทั้งภาคสนาม (ซึ่งมาจากการตรวจสอบความปลอดภัยที่เป็นอิสระจริง):
เปิดใช้งานการเติมข้อความอัตโนมัติ HTML - ช่องรหัสผ่านในรูปแบบ HTML เปิดใช้งานการเติมข้อความอัตโนมัติ เบราว์เซอร์ส่วนใหญ่มีสิ่งอำนวยความสะดวกในการจดจำข้อมูลรับรองของผู้ใช้ที่ป้อนในรูปแบบ HTML
ความเสี่ยงสัมพัทธ์: ต่ำ
ระบบ / อุปกรณ์ที่ได้รับผลกระทบ: o https: // * ** * *** /
ฉันยอมรับด้วยว่าควรครอบคลุมฟิลด์ใด ๆที่มีข้อมูลส่วนตัวอย่างแท้จริง ฉันรู้สึกว่าการบังคับให้บุคคลพิมพ์ข้อมูลบัตรเครดิตรหัส CVC รหัสผ่านชื่อผู้ใช้และอื่น ๆ เป็นเรื่องปกติเมื่อใดก็ตามที่ไซต์นั้นจะเข้าถึงสิ่งที่ควรได้รับการรักษาความปลอดภัย [โดยทั่วไปหรือตามข้อกำหนดการปฏิบัติตามกฎหมาย] ตัวอย่างเช่นแบบฟอร์มการซื้อไซต์ธนาคาร / เครดิตไซต์ภาษีข้อมูลทางการแพทย์ของรัฐบาลกลางนิวเคลียร์ ฯลฯไม่ใช่ไซต์เช่น Stack Overflow หรือ Facebook
ไซต์ประเภทอื่น ๆ เช่น TimeStar Online สำหรับการตอกบัตรเข้าและออกจากงาน - มันโง่มากเพราะฉันใช้พีซี / บัญชีเดียวกันในที่ทำงานตลอดเวลาทำให้ฉันไม่สามารถบันทึกข้อมูลประจำตัวในไซต์นั้นได้ซึ่งแปลกพอที่ฉันทำได้บน Android แต่ไม่ใช่บน iPad แม้แต่พีซีที่ใช้ร่วมกันก็ไม่เลวร้ายนักเนื่องจากการตอกบัตรเข้า / ออกสำหรับคนอื่นไม่ได้ทำอะไรเลยนอกจากรบกวนหัวหน้างานของคุณ (พวกเขาต้องเข้าไปและลบหมัดที่ผิดพลาด - เพียงแค่เลือกที่จะไม่บันทึกบนพีซีสาธารณะ)
<input type="password" placeholder="Enter New Password" autocomplete="new-password">
จัดให้เลย
นี่คือคำตอบที่ดีที่สุดและง่ายที่สุด! ใส่ฟิลด์รหัสผ่านพิเศษไว้หน้าinput
ฟิลด์ของคุณและตั้งค่าdisplay:none
เพื่อให้เมื่อเบราว์เซอร์กรอกข้อมูลลงไปมันจะทำในสิ่งinput
ที่คุณไม่สนใจ
เปลี่ยนสิ่งนี้:
<input type="password" name="password" size="25" class="input" id="password" value="">
สำหรับสิ่งนี้:
<input type="password" style="display:none;">
<input type="password" name="password" size="25" class="input" id="password" value="">
display:none
ไม่ได้ผลสำหรับฉัน (Chrome 61 OSX) แต่สิ่งนี้ทำได้:<input type="password" style="position: absolute; top: -1000px;">
อ่านคำตอบที่เขาใช้วิธีง่ายๆนี้ซึ่งใช้ได้ทุกที่ (ดูการแก้ไขสำหรับ Safari mobile):
<input type="password" readonly onfocus="this.removeAttribute('readonly');"/>
คุณสามารถใช้ JQuery เลือกรายการโดย id:
$("input#Password").attr("autocomplete","off");
หรือเลือกรายการตามประเภท:
$("input[type='password']").attr("autocomplete","off");
หรือยัง:
คุณสามารถใช้ Javascript แท้:
document.getElementById('Password').autocomplete = 'off';
คุณยังสามารถใช้มันดังต่อไปนี้
$('#Password').attr("autocomplete", "off");
setTimeout('$("#Password").val("");', 2000);
เมื่อเห็นว่าการเติมข้อความอัตโนมัติ = ปิดถูกเลิกใช้แล้วฉันขอแนะนำวิธีแก้ปัญหาที่ใหม่กว่านี้
ตั้งค่าฟิลด์รหัสผ่านของคุณเป็นฟิลด์ข้อความปกติและปิดบังอินพุตของคุณด้วย "ดิสก์" โดยใช้ CSS รหัสควรมีลักษณะดังนี้:
<input type="text" class="myPassword" />
input .myPassword{
text-security:disc;
-webkit-text-security:disc;
-mox-text-security:disc;
}
โปรดทราบว่าสิ่งนี้อาจใช้ไม่ได้กับเบราว์เซอร์ firefox และจำเป็นต้องมีคำอธิบายเพิ่มเติม อ่านเพิ่มเติมได้ที่นี่: https://stackoverflow.com/a/49304708/5477548
วิธีแก้ปัญหาถูกนำมาจากลิงค์นี้แต่เพื่อให้สอดคล้องกับ SO "no-hotlinks" ฉันสรุปไว้ที่นี่
ในกรณีของเบราว์เซอร์หลัก ๆ ส่วนใหญ่มีการป้อนข้อมูลภายนอกและไม่ได้เชื่อมต่อกับรูปแบบใด ๆ ก็ตามที่ทำให้เบราว์เซอร์คิดว่าไม่มีการส่ง ในกรณีนี้คุณจะต้องใช้การตรวจสอบความถูกต้องของ JS สำหรับการเข้าสู่ระบบของคุณและการเข้ารหัสรหัสผ่านของคุณก็จำเป็นเช่นกัน
ก่อน:
<form action="..."><input type="password"/></form>
หลังจาก:
<input type="password"/>
ฉันพบว่าสิ่งต่อไปนี้ใช้ได้กับ Firefox และ Chrome
<form ... > <!-- more stuff -->
<input name="person" type="text" size=30 value="">
<input name="mypswd" type="password" size=6 value="" autocomplete="off">
<input name="userid" type="text" value="security" style="display:none">
<input name="passwd" type="password" value="faker" style="display:none">
<!-- more stuff --> </form>
ทั้งหมดนี้อยู่ในส่วนแบบฟอร์ม "person" และ "mypswd" คือสิ่งที่คุณต้องการ แต่เบราว์เซอร์จะบันทึก "userid" และ "passwd" เพียงครั้งเดียวและจะไม่เปลี่ยนแปลงอีกเลยเนื่องจากไม่มีการเปลี่ยนแปลง คุณสามารถกำจัดฟิลด์ "บุคคล" ได้หากคุณไม่ต้องการจริงๆ ในกรณีนี้สิ่งที่คุณต้องการคือช่อง "mypswd" ซึ่งอาจเปลี่ยนแปลงได้ในลักษณะที่ผู้ใช้เว็บเพจของคุณรู้จัก
วิธีเดียวที่ฉันจะได้รับ firefox, edge และ Internet explorer เพื่อปิดการเติมข้อความอัตโนมัติคือการเพิ่ม autocomplete = "false" ในคำสั่งแบบฟอร์มของฉันเช่น:
<form action="postingpage.php" autocomplete="false" method="post">
และฉันต้องเพิ่มการเติมข้อความอัตโนมัติ = "ปิด" ในการป้อนแบบฟอร์มของฉันและเปลี่ยนประเภทเป็นข้อความเช่น:
<input type="text" autocomplete="off">
ดูเหมือนว่าโค้ด html นี้จะต้องเป็นมาตรฐานสำหรับเบราว์เซอร์ ควรแก้ไขแบบฟอร์ม = รหัสผ่านเพื่อให้แทนที่การตั้งค่าเบราว์เซอร์ ปัญหาเดียวที่ฉันมีคือฉันสูญเสียการมาสก์อินพุตของฉัน แต่ในด้านสว่าง "ไซต์นี้ไม่ปลอดภัย" ที่น่ารำคาญไม่ปรากฏใน firefox
สำหรับฉันมันไม่ใช่เรื่องใหญ่เนื่องจากผู้ใช้ได้รับการรับรองความถูกต้องแล้วและเป็นส่วนการเปลี่ยนชื่อผู้ใช้และรหัสผ่านของฉัน