Tôi nhớ đã thấy một cách để có một <input type="password" />
trình duyệt sẽ không nhắc người dùng lưu mật khẩu. Nhưng tôi đang vẽ một khoảng trống. Có một thuộc tính HTML hoặc một số thủ thuật JavaScript sẽ thực hiện điều này không?
Tôi nhớ đã thấy một cách để có một <input type="password" />
trình duyệt sẽ không nhắc người dùng lưu mật khẩu. Nhưng tôi đang vẽ một khoảng trống. Có một thuộc tính HTML hoặc một số thủ thuật JavaScript sẽ thực hiện điều này không?
Câu trả lời:
Hãy thử sử dụng autocomplete="off"
. Tuy nhiên, không chắc mọi trình duyệt đều hỗ trợ nó. Tài liệu MSDN tại đây .
CHỈNH SỬA : Lưu ý: hầu hết các trình duyệt đã bỏ hỗ trợ cho thuộc tính này. Xem Autocomplete = "off" có tương thích với tất cả các trình duyệt hiện đại không?
Đây được cho là thứ nên được để cho người dùng hơn là người thiết kế trang web.
<input type="password" autocomplete="off" />
Tôi chỉ muốn nói thêm rằng với tư cách là một người dùng, tôi nghĩ rằng điều này rất khó chịu và rắc rối cần khắc phục. Tôi thực sự khuyên bạn không nên sử dụng điều này vì nó có nhiều khả năng sẽ làm trầm trọng thêm người dùng của bạn.
Mật khẩu đã không được lưu trữ trong MRU và các máy công cộng được định cấu hình chính xác thậm chí sẽ không lưu tên người dùng.
Tôi đã giải quyết theo một cách khác. Bạn có thể thử điều này.
<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>
#cách khác
<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>
// bạn cần thêm thuộc tính autocomplete = "off" hoặc bạn có thể thêm class .auto-complete-off vào ô nhập liệu và tận hưởng
Thí dụ:
<input id="passfld" type="password" autocomplete="off" />
OR
<input id="passfld" class="auto-complete-off" type="password" />
Tôi đã thử những cách sau và có vẻ như nó hoạt động với mọi trình duyệt:
<input id="passfld" type="text" autocomplete="off" />
<script type="text/javascript">
$(function(){
var passElem = $("input#passfld");
passElem.focus(function() {
passElem.prop("type", "password");
});
});
</script>
Cách này an toàn hơn nhiều so với việc sử dụng các kỹ thuật hết thời gian chờ, vì nó đảm bảo rằng trường đầu vào sẽ chuyển thành mật khẩu khi người dùng lấy tiêu điểm.
Đối với các vấn đề bảo mật, đây là những gì chuyên gia tư vấn bảo mật sẽ cho bạn biết về toàn bộ vấn đề (đây là từ một cuộc kiểm toán bảo mật độc lập thực tế):
HTML Autocomplete Enabled - Các trường mật khẩu trong biểu mẫu HTML đã bật tính năng tự động điền. Hầu hết các trình duyệt đều có cơ sở để ghi nhớ thông tin đăng nhập của người dùng được nhập vào các biểu mẫu HTML.
Rủi ro tương đối: Thấp
Hệ thống / Thiết bị bị ảnh hưởng: o https: // * ** * *** /
Tôi cũng đồng ý rằng điều này sẽ bao gồm bất kỳ trường nào chứa dữ liệu thực sự riêng tư. Tôi cảm thấy rằng việc buộc một người luôn nhập thông tin thẻ tín dụng, mã CVC, mật khẩu, tên người dùng, v.v. của họ là hoàn toàn ổn bất cứ khi nào trang web đó truy cập vào bất kỳ thứ gì cần được bảo mật [phổ biến hoặc theo yêu cầu tuân thủ pháp luật]. Ví dụ: biểu mẫu mua hàng, trang web ngân hàng / tín dụng, trang web thuế, dữ liệu y tế, liên bang, hạt nhân, v.v. - không phải Trang web như Stack Overflow hoặc Facebook.
Các loại trang web khác - ví dụ: TimeStar Online để theo dõi thời gian vào và ra khỏi công việc - thật ngu ngốc, vì tôi luôn sử dụng cùng một PC / tài khoản tại nơi làm việc, nên tôi không thể lưu thông tin đăng nhập trên trang web đó - thật kỳ lạ là tôi có thể trên Android của mình nhưng không phải trên iPad. Ngay cả những máy tính dùng chung, điều này cũng không quá tệ vì việc bấm giờ vào / ra cho người khác thực sự không làm gì khác ngoài việc làm phiền người giám sát của bạn. (Họ phải vào và xóa những cú đấm sai lầm - chỉ cần chọn không lưu trên PC công cộng).
<input type="password" placeholder="Enter New Password" autocomplete="new-password">
Của bạn đây.
Đây là câu trả lời hay nhất và dễ nhất! Đặt một trường mật khẩu bổ sung trước input
trường của bạn và đặt display:none
, để khi trình duyệt điền vào, nó sẽ thực hiện nó tronginput
mà bạn không quan tâm.
Thay đổi điều này:
<input type="password" name="password" size="25" class="input" id="password" value="">
đến điều này:
<input type="password" style="display:none;">
<input type="password" name="password" size="25" class="input" id="password" value="">
display:none
không hoạt động đối với tôi (Chrome 61 OSX), nhưng điều này có hiệu quả:<input type="password" style="position: absolute; top: -1000px;">
Đọc thêm câu trả lời này khi anh ấy đang sử dụng giải pháp dễ dàng hoạt động ở mọi nơi (xem thêm bản sửa lỗi cho Safari di động):
<input type="password" readonly onfocus="this.removeAttribute('readonly');"/>
Bạn có thể sử dụng JQuery, chọn mục theo id:
$("input#Password").attr("autocomplete","off");
Hoặc chọn mặt hàng theo loại:
$("input[type='password']").attr("autocomplete","off");
Hoặc cũng có thể:
Bạn có thể sử dụng Javascript thuần túy:
document.getElementById('Password').autocomplete = 'off';
bạn cũng có thể sử dụng nó như sau
$('#Password').attr("autocomplete", "off");
setTimeout('$("#Password").val("");', 2000);
thấy là autocomplete = off không được dùng nữa, tôi đề xuất một giải pháp mới hơn.
Đặt trường mật khẩu của bạn thành trường văn bản bình thường và che đầu vào của bạn bằng "đĩa" bằng cách sử dụng CSS. mã sẽ trông như thế này:
<input type="text" class="myPassword" />
input .myPassword{
text-security:disc;
-webkit-text-security:disc;
-mox-text-security:disc;
}
Xin lưu ý rằng điều này có thể không hoạt động dựa trên các trình duyệt firefox và cần có một lối đi vòng bổ sung. Đọc thêm về nó tại đây: https://stackoverflow.com/a/49304708/5477548 .
Giải pháp được lấy từ liên kết này , nhưng để tuân thủ SO "no-hotlinks", tôi đã tóm tắt nó ở đây.
Trong trường hợp của hầu hết các trình duyệt chính, có đầu vào bên ngoài và không được kết nối với bất kỳ hình thức nào khiến trình duyệt nghĩ rằng không có trình duyệt. Trong trường hợp này, bạn sẽ phải sử dụng xác thực JS thuần túy để đăng nhập và mã hóa mật khẩu của bạn cũng sẽ cần thiết.
Trước:
<form action="..."><input type="password"/></form>
Sau:
<input type="password"/>
Tôi đã tìm thấy các hoạt động sau đây trên Firefox và 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>
Tất cả những điều này đều nằm trong phần biểu mẫu. "person" và "mypswd" là những gì bạn muốn, nhưng trình duyệt sẽ lưu "userid" và "passwd" một lần và không bao giờ lưu lại vì chúng không thay đổi. Bạn có thể loại bỏ trường "người" nếu bạn không thực sự cần nó. Trong trường hợp đó, tất cả những gì bạn muốn là trường "mypswd", trường này có thể thay đổi theo một cách nào đó mà người dùng trang web của bạn biết.
Cách duy nhất tôi có thể yêu cầu firefox, edge và Internet explorer tắt tính năng tự động hoàn thành là thêm autocomplete = "false" trong câu lệnh biểu mẫu của tôi như:
<form action="postingpage.php" autocomplete="false" method="post">
và tôi phải thêm autocomplete = "off" vào đầu vào biểu mẫu của mình và thay đổi loại thành văn bản Như:
<input type="text" autocomplete="off">
Có vẻ như mã html này cần được chuẩn hóa với các trình duyệt. loại biểu mẫu = mật khẩu nên được sửa đổi để nó ghi đè cài đặt trình duyệt. Vấn đề duy nhất tôi gặp phải là tôi đã mất mặt nạ đầu vào của mình. Nhưng mặt sáng sủa là "trang web này không an toàn" khó chịu không hiển thị trong firefox.
đối với tôi, đó không phải là vấn đề lớn vì người dùng đã được xác thực và phần tên người dùng và mật khẩu thay đổi của tôi