Vô hiệu hóa chức năng 'Lưu mật khẩu' của trình duyệt


423

Một trong những niềm vui khi làm việc cho một cơ quan chăm sóc sức khỏe của chính phủ là phải đối phó với tất cả những hoang tưởng xung quanh việc đối phó với PHI (Thông tin sức khỏe được bảo vệ). Đừng hiểu sai ý tôi, tôi làm tất cả những gì có thể để bảo vệ thông tin cá nhân của mọi người (sức khỏe, tài chính, thói quen lướt web, v.v.), nhưng đôi khi mọi người lại hơi quá khích.

Tình huống cụ thể: Một trong những khách hàng nhà nước của chúng tôi gần đây phát hiện ra rằng trình duyệt cung cấp tính năng tiện dụng để lưu mật khẩu của bạn. Chúng ta đều biết rằng nó đã ở đó được một thời gian và hoàn toàn không bắt buộc và tùy thuộc vào người dùng cuối quyết định liệu đó có phải là một quyết định thông minh để sử dụng hay không. Tuy nhiên, có một chút náo động tại thời điểm này và chúng tôi đang được yêu cầu tìm cách vô hiệu hóa chức năng đó cho trang web của chúng tôi.

Câu hỏi : Có cách nào để một trang web thông báo trình duyệt không cung cấp để nhớ mật khẩu không? Tôi đã phát triển web từ lâu nhưng không biết rằng tôi đã gặp phải điều đó trước đây.

Bất kỳ trợ giúp được đánh giá cao.


6
Bạn nên cung cấp một tập lệnh greasemonkey để mọi người có thể kích hoạt lại nó. Tôi không nghĩ người dùng muốn bị buộc phải nhập mật khẩu mỗi lần ...
ThiefMaster

14
Câu hỏi xứng đáng là một upvote vì hữu ích và rõ ràng. Mặt khác, tôi không muốn mọi người tìm ra giải pháp cho "vấn đề" này.
Ian Boyd

11
Đây không phải luôn luôn là một "vấn đề". Tôi đến đây vì firefox nhắc lưu mật khẩu cho một biểu mẫu có chứa mật khẩu WiFi / SSID, không phải tên đăng nhập / mật khẩu. Nó rất khó chịu và tôi muốn làm điều đó dừng lại.
srd

1
Nếu thông tin quan trọng, nó cần được bảo vệ bởi nhiều hơn là mật khẩu.
Sam Watkins

Một cách có vẻ như hoạt động là không sử dụng <form>. Nếu bạn đang sử dụng javascript để gửi dữ liệu (XHR), thì bạn không cần nó. Tôi muốn vô hiệu hóa trong một hệ thống sử dụng xác thực "mật khẩu một lần" (không có lý do để lưu trữ nó). Đối với xác thực người dùng / vượt qua, tôi không khuyên bạn nên tắt tính năng đó.
Lepe

Câu trả lời:


322

Tôi không chắc liệu nó có hoạt động trong tất cả các trình duyệt hay không nhưng bạn nên thử đặt autocomplete = "off" trên biểu mẫu.

<form id="loginForm" action="login.cgi" method="post" autocomplete="off">

Cách dễ nhất và đơn giản nhất để vô hiệu hóa lời nhắc lưu trữ Biểu mẫu và Mật khẩu và ngăn dữ liệu biểu mẫu được lưu trong bộ nhớ cache trong lịch sử phiên là sử dụng thuộc tính thành phần biểu mẫu tự động hoàn thành với giá trị "tắt".

Từ http://developer.mozilla.org/En/How_to_Turn_ Offer_Form_Autocompletion

Một số nghiên cứu nhỏ cho thấy rằng điều này hoạt động trong IE nhưng tôi sẽ không đảm bảo;)

@Joseph : Nếu đó là một yêu cầu khắt khe để vượt qua xác thực XHTML với đánh dấu thực tế (không biết tại sao lại như vậy) về mặt lý thuyết bạn có thể thêm thuộc tính này bằng javascript nhưng sau đó người dùng bị js bị vô hiệu hóa (có thể là số lượng người dùng không thể bỏ qua hoặc bằng không nếu trang web của bạn yêu cầu js) vẫn sẽ lưu mật khẩu của họ.

Ví dụ với jQuery:

$('#loginForm').attr('autocomplete', 'off');

48
Chỉ cần một nhận xét nhanh, vì điều này đang thay đổi, HTML5 thêm thuộc tính tự động hoàn thành vào thông số kỹ thuật, vì vậy bây giờ nó hợp lệ.
Tyler Egeto

11
Chỉ cần FYI, Microsoft đã quyết định rằng Internet Explorer 11 sẽ không còn vinh dự autocomplete="off"cho input type="password"các lĩnh vực. msdn.microsoft.com/en-us/library/ie/ms533486%28v=vs.85%29.aspx
JW Lim

6
Giống như @JWLim đã đề cập đến việc IE 11 bỏ hỗ trợ để vô hiệu hóa chức năng lưu mật khẩu, Firefox cũng vậy. bugzilla.mozilla.org/show_orms.cgi?id=956906
Gregory Cosmo Haun

3
Firefox (không may) đã đi theo sự dẫn dắt của Microsoft và cũng "loại bỏ" hỗ trợ tự động hoàn thành. Để biết chi tiết, hãy xem nhận xét 100 trong phần thảo luận về vấn đề sau: bugzilla.mozilla.org/show_orms.cgi?id=956906
Bouncing Bit

8
Bây giờ, không hoạt động cho Firefox 38+ mozilla.org/en-US/firefox/38.0/releasenotes
Đèn chiếu sáng

44

Ngoài

autocomplete="off"

Sử dụng

readonly onfocus="this.removeAttribute('readonly');"

cho các đầu vào mà bạn không muốn họ nhớ dữ liệu mẫu ( username, password, vv) như hình dưới đây:

<input type="text" name="UserName" autocomplete="off" readonly 
    onfocus="this.removeAttribute('readonly');" >

<input type="password" name="Password" autocomplete="off" readonly 
    onfocus="this.removeAttribute('readonly');" >

Thử nghiệm trên các phiên bản mới nhất của trình duyệt chính tức là Google Chrome, Mozilla Firefox, Microsoft Edge, vv và các công trình như một say mê. Hi vọng điêu nay co ich.


2
@Murat Yıldız: Tôi phải thực hiện tương tự và tôi đã làm theo mã của bạn. Nó hoạt động tốt với tôi trong tất cả các trình duyệt. Cảm ơn bạn !
Sree

1
@Sree Tôi rất vui vì nó hữu ích cho bạn :)
Murat Yıldız

3
Chỉ cần thử nghiệm Mozilla Firefox 52.0 , Google Chrome 57.0 , Microsoft Edge 38.1 và hoạt động như một cơ duyên! ..
Murat Yıldız

1
Có thể có lỗi trong Safari trên điện thoại di động vì câu trả lời này đang sửa lỗi stackoverflow.com/questions/2530/iêu
Ferie

1
Windows Firefox 57.0.2 (64-bit) vẫn đang đề xuất lưu mật khẩu sau khi tôi triển khai việc này.
Panu Haaramo

37

Tôi đã phải vật lộn với vấn đề này một thời gian, với một sự thay đổi độc đáo cho vấn đề. Người dùng đặc quyền không thể có mật khẩu đã lưu hoạt động cho họ, nhưng người dùng bình thường cần nó. Điều này có nghĩa là người dùng đặc quyền phải đăng nhập hai lần, lần thứ hai thực thi không có mật khẩu đã lưu.

Với yêu cầu này, autocomplete="off"phương thức tiêu chuẩn không hoạt động trên tất cả các trình duyệt, vì mật khẩu có thể đã được lưu từ lần đăng nhập đầu tiên. Một đồng nghiệp đã tìm thấy một giải pháp để thay thế trường mật khẩu khi nó được tập trung bằng một trường mật khẩu mới, sau đó tập trung vào trường mật khẩu mới (sau đó nối lên trình xử lý sự kiện tương tự). Điều này đã làm việc (ngoại trừ nó gây ra một vòng lặp vô hạn trong IE6). Có lẽ có một cách xung quanh đó, nhưng nó đã gây ra chứng đau nửa đầu cho tôi.

Cuối cùng, tôi đã cố gắng chỉ có tên người dùng và mật khẩu bên ngoài biểu mẫu. Thật ngạc nhiên, điều này đã làm việc! Nó hoạt động trên IE6 và các phiên bản hiện tại của Firefox và Chrome trên Linux. Tôi đã không thử nghiệm thêm, nhưng tôi nghi ngờ nó hoạt động ở hầu hết các trình duyệt (nhưng sẽ không làm tôi ngạc nhiên nếu có một trình duyệt ngoài đó không quan tâm nếu không có hình thức).

Đây là một số mã mẫu, cùng với một số jQuery để làm cho nó hoạt động:

<input type="text" id="username" name="username"/>
<input type="password" id="password" name="password"/>

<form id="theForm" action="/your/login" method="post">
  <input type="hidden" id="hiddenUsername" name="username"/>
  <input type="hidden" id="hiddenPassword" name="password"/>
  <input type="submit" value="Login"/>
</form>

<script type="text/javascript" language="JavaScript">
  $("#theForm").submit(function() {
    $("#hiddenUsername").val($("#username").val());
    $("#hiddenPassword").val($("#password").val());
  });
  $("#username,#password").keypress(function(e) {
    if (e.which == 13) {
      $("#theForm").submit();
    }
  });
</script>

1
Đó trông giống như một giải pháp tốt. Nó có ý nghĩa vì hình thức mà bạn gửi xuống không bao gồm mật khẩu. Tôi cho rằng để chắc chắn rằng bạn có thể có hai biểu mẫu, mẫu đầu tiên chỉ để đảm bảo rằng tên người dùng và mật khẩu hiển thị trong tất cả các trình duyệt.
Alexis Wilke

3
Tôi thích giải pháp của bạn và thực hiện tương tự trên trang web của tôi, thật nực cười làm sao hôm nay, các trình duyệt không cung cấp một cách đơn giản để giải quyết vấn đề này.
AglessEssence

Không chắc có phải vì tôi bị kẹt khi sử dụng jquery 1.6 hay không, nhưng jquery ở trên chỉ hoạt động sau khi gói bên trong $ (tài liệu). Đã (hàm () {});
rgbflawed

Linh hồn chính xác duy nhất là điều này vì một số trình duyệt sẽ không chấp nhận autocomplete = "tắt" nữa!
Abadis

1
Tôi vừa thử phương pháp này trên chrome, opera và trình thám hiểm internet và có vẻ như nó hoạt động, nhưng nó không hoạt động với Firefox một cách không tự nguyện
chenks 27/2/19

29

Vâng, đó là một bài viết rất cũ, nhưng tôi vẫn sẽ đưa ra giải pháp của mình, điều mà nhóm của tôi đã cố gắng đạt được từ lâu. Chúng tôi vừa thêm trường nhập kiểu mới = "mật khẩu" bên trong biểu mẫu và gói nó trong div và làm cho div bị ẩn. Đảm bảo rằng div này là trước khi nhập mật khẩu thực tế. Điều này làm việc cho chúng tôi và nó đã không cung cấp bất kỳ tùy chọn Lưu mật khẩu

Plunk - http://plnkr.co/edit/xmBR31NQMUgUhYHBiZSg?p=preview

HTML:

<form method="post" action="yoururl">
      <div class="hidden">
        <input type="password"/>
      </div>
      <input type="text" name="username" placeholder="username"/>
      <input type="password" name="password" placeholder="password"/>
    </form>

CSS:

.hidden {display:none;}

1
Một lợi thế của cách này so với những người sử dụng đầu vào ẩn là cách mật khẩu này không bao giờ được lưu trữ trong trường bản rõ
pvgoddijn

@ whyAto8 Điều này không hiệu quả với tôi trong Chrome 47.0.2526.111 ... mẹo để làm cho nó hoạt động là thêm một văn bản trường khác trong div ẩn. Trình duyệt yêu cầu lưu mật khẩu NHƯNG thông báo "Bạn có chắc chắn lưu crendetials này không?" và sau đó nó hiển thị tên người dùng trống và mật khẩu trống. Điều này đã làm việc.
David Bélanger

1
Giải pháp whyAto8 cùng với nhận xét của @David Bélanger có hiệu quả với tôi (không có giải pháp nào khác làm được). Tôi cũng nên đề cập rằng tôi đã thêm hai trường ẩn trống TRƯỚC những trường thực sự được sử dụng để nhập dữ liệu và các trường trùng lặp (ẩn) có cùng tên tương ứng. Bằng cách này, Chrome (48.0.2564.103) thậm chí không hỏi liệu có nên lưu mật khẩu nào không.
Vadim

Không có kết hợp nào hoạt động trên Chrome 48.0.2564.116. Ngay cả khi kết hợp với nhận xét của DavidBelanger, cửa sổ bật lên Chrome yêu cầu bạn lưu mật khẩu vẫn lưu mật khẩu nếu bạn nhấp vào ok
ChrisO

Câu trả lời tuyệt vời .. Chỉ có thể bạn vui lòng cho tôi biết lý do tại sao bạn nói "Hãy chắc chắn rằng div này là trước khi nhập mật khẩu thực tế" ? Tôi đặt div đó sau khi nhập mật khẩu thực tế và nó vẫn hoạt động .. Vậy tại sao bạn lại đề cập đến điều đó?
Martin AJ

16

Bạn có thể ngăn trình duyệt khớp các biểu mẫu bằng cách chọn ngẫu nhiên tên được sử dụng cho trường mật khẩu trên mỗi chương trình. Sau đó, trình duyệt sẽ thấy một mật khẩu cho cùng một url, nhưng không thể chắc chắn đó là cùng một mật khẩu . Có lẽ nó đang kiểm soát thứ khác.

Cập nhật: lưu ý rằng điều này nên được sử dụng ngoài việc sử dụng tự động hoàn thành hoặc các chiến thuật khác, không phải là sự thay thế cho chúng, vì những lý do được chỉ định bởi những người khác.

Cũng lưu ý rằng điều này sẽ chỉ ngăn trình duyệt tự động hoàn thành mật khẩu. Nó sẽ không ngăn nó lưu mật khẩu ở bất kỳ mức độ tùy ý nào mà trình duyệt chọn sử dụng.


5
[@Joel] (# 32409) có thể ngăn biểu mẫu tự động được điền nhưng điều đó có thể ngăn trình duyệt sau đó yêu cầu lưu mật khẩu cho biểu mẫu được cho là mới này không?
Joseph Pecoraro

3
Tôi không tin rằng điều này sẽ làm việc bây giờ. Trong FF 13, tôi có một biểu mẫu với một số trường mật khẩu, tất cả đều có tên khác nhau. FF, một khi nó lưu mật khẩu cho trang đó, hãy nhập mật khẩu đã lưu vào TẤT CẢ các trường mật khẩu. Nó không quan tâm tên của các trường là gì (ví dụ: tôi có "new_password" và "old_password" và mật khẩu đã lưu được đổ vào cả hai trường). Trong hình thức cụ thể này, tôi không có tên người dùng để lưu mật khẩu - chỉ có hai trường mật khẩu, trong trường hợp có sự khác biệt.
Jason

1
Gật đầu @Jason, cung cấp cho trường mật khẩu một UUID mới cho một tên mỗi lần không làm gì để đánh bại các nỗ lực của trình duyệt để điền vào.
FP Freely

14

Sử dụng xác thực hai yếu tố thực tế để tránh sự phụ thuộc duy nhất vào mật khẩu có thể được lưu trữ ở nhiều nơi hơn bộ đệm trình duyệt của người dùng.


2
btw đó là xác thực không xác thực
Jonathan.

26
@Jonathan Đáng tiếc, tôi thích xác thực hơn
Ian Boyd

Một giải pháp khác có thể là triển khai JavaScript, đóng mạnh trình duyệt sau khi người dùng đăng xuất khỏi ứng dụng. Điều này sẽ xóa bộ nhớ hoàn chỉnh của trình duyệt và do đó không có dữ liệu nào có thể được truy xuất từ ​​bộ nhớ của trình duyệt.
Ajay Takur

13

Cách sạch nhất là sử dụng autocomplete="off"thuộc tính thẻ nhưng Firefox không tuân theo đúng cách khi bạn chuyển trường bằng Tab.

Cách duy nhất bạn có thể ngăn chặn điều này là thêm trường mật khẩu ẩn giả để lừa trình duyệt nhập mật khẩu vào đó.

<input type="text" id="username" name="username"/>
<input type="password" id="prevent_autofill" autocomplete="off" style="display:none" tabindex="-1" />
<input type="password" id="password" autocomplete="off" name="password"/>

Đó là một hack xấu xí, bởi vì bạn thay đổi hành vi trình duyệt, nên được coi là thực hành xấu. Chỉ sử dụng nó nếu bạn thực sự cần nó.

Lưu ý: điều này sẽ ngăn chặn tự động điền mật khẩu một cách hiệu quả, vì FF sẽ "lưu" giá trị của #prevent_autofill(trống) và sẽ cố gắng điền bất kỳ mật khẩu đã lưu nào ở đó, vì nó luôn sử dụng đầu type="password"vào đầu tiên mà nó tìm thấy trong DOM sau "tên người dùng" tương ứng đầu vào.


Điểm nào trong việc ngăn chặn trình duyệt điền mật khẩu nhưng cho phép nó lưu trữ nó? Nó chỉ khiến người dùng nghĩ rằng mật khẩu của họ không được lưu trữ trong khi họ thực sự dễ bị tổn thương.
CodeInChaos

Bằng cách này, nó sẽ không thực sự lưu trữ mật khẩu của bạn, bởi vì bạn gõ vào hộp khác, bị FF bỏ qua. Thay vào đó, nó sẽ lưu trữ một chuỗi rỗng.
venimus

@CodesInChaos IMHO bạn nên xem xét lại downvote của mình, vì mối quan tâm của bạn không hợp lệ
venimus

12

Tôi đã kiểm tra việc thêm autocomplete = "off" trong thẻ biểu mẫu trong tất cả các trình duyệt chính. Trên thực tế, hầu hết các dân tộc ở Mỹ sử dụng IE8 cho đến nay.

  1. IE8, IE9, IE10, Firefox, Safari đều hoạt động tốt.

    Trình duyệt không hỏi "lưu mật khẩu". Ngoài ra, tên người dùng và mật khẩu đã lưu trước đây không được điền.

  2. Chrome & IE 11 không hỗ trợ tính năng tự động hoàn thành = "tắt"
  3. FF hỗ trợ autocomplete = "tắt". nhưng đôi khi các thông tin lưu trữ hiện có được điền.

Cập nhật vào ngày 11 tháng 6 năm 2014

Cuối cùng, bên dưới là một giải pháp trình duyệt chéo sử dụng javascript và nó hoạt động tốt trong tất cả các trình duyệt.

Cần xóa thẻ "mẫu" trong mẫu đăng nhập. Sau khi xác thực phía máy khách, đặt thông tin đăng nhập ở dạng ẩn và gửi nó.

Ngoài ra, thêm hai phương pháp. một để xác thực "validateLogin ()" và một cái khác để nghe sự kiện enter trong khi nhấp enter trong hộp văn bản / mật khẩu / nút "checkAndSubmit ()". bởi vì bây giờ biểu mẫu đăng nhập không có thẻ biểu mẫu, vì vậy hãy nhập sự kiện không hoạt động ở đây.

HTML

<form id="HiddenLoginForm" action="" method="post">
<input type="hidden" name="username" id="hidden_username" />
<input type="hidden" name="password" id="hidden_password" />
</form>

Username: <input type="text" name="username" id="username" onKeyPress="return checkAndSubmit(event);" /> 
Password: <input type="text" name="password" id="password" onKeyPress="return checkAndSubmit(event);" /> 
<input type="button" value="submit" onClick="return validateAndLogin();" onKeyPress="return checkAndSubmit(event);" /> 

Javascript

//For validation- you can modify as you like
function validateAndLogin(){
  var username = document.getElementById("username");
  var password = document.getElementById("password");

  if(username  && username.value == ''){
    alert("Please enter username!");
    return false;
  }

  if(password && password.value == ''){
    alert("Please enter password!");
    return false;
  }

  document.getElementById("hidden_username").value = username.value;
  document.getElementById("hidden_password").value = password.value;
  document.getElementById("HiddenLoginForm").submit();
}

//For enter event
function checkAndSubmit(e) {
 if (e.keyCode == 13) {
   validateAndLogin();
 }
}

Chúc may mắn!!!


Mặc dù câu trả lời này cung cấp thông tin hữu ích, nhưng nó không thực sự trả lời câu hỏi làm thế nào để ngăn trình duyệt lưu mật khẩu.
JW Lim

@JW Lim, tôi đã cập nhật câu trả lời. Hãy nhìn vào nó. Cảm ơn!
Asik

@Sivakumar, Ok vui lòng bao gồm HĐH và phiên bản Safari. để người khác nhận thức giống nhau. nó đã hoạt động trong hệ thống của tôi (windows 8, Safary 5)
Asik

@Asik Safari 8.0.3 và Mac OS 10.10
Sivakumar 9/2/2015

7

Không thực sự - điều duy nhất bạn thực sự có thể làm là đưa ra lời khuyên trên trang web; có thể, trước khi họ đăng nhập lần đầu tiên, bạn có thể hiển thị cho họ một biểu mẫu với thông tin cho biết rằng họ không cho phép trình duyệt lưu mật khẩu.

Sau đó, người dùng sẽ ngay lập tức làm theo lời khuyên, ghi lại mật khẩu vào một ghi chú sau đó và dán nó vào màn hình của họ.


10
Bạn phải nhớ đây là một trang web của chính phủ và những thứ như vậy bị buộc tội chính trị. Nếu ai đó ở trên cao nói, "nó không được hoạt động như thế này", thì những gì thực tế không phải là một phần của phương trình. Vấn đề có thể được chuyển sang ghi chú Post-It, nhưng chính sách đối với các bộ phận khác là để xử lý - vấn đề đã được chuyển sang ;-) Và tôi thực sự nghiêm túc.
Jason

6

Những gì tôi đã và đang làm là sự kết hợp của autocomplete = "off" và xóa các trường mật khẩu bằng cách sử dụng javascript / jQuery.

Ví dụ về jQuery:

$(function() { 
    $('#PasswordEdit').attr("autocomplete", "off");
    setTimeout('$("#PasswordEdit").val("");', 50); 
});

Bằng cách sử dụng, setTimeout()bạn có thể đợi trình duyệt hoàn thành trường trước khi xóa, nếu không trình duyệt sẽ luôn tự động hoàn tất sau khi bạn xóa trường.


3

nếu autocomplete = "off" không hoạt động ... hãy xóa thẻ biểu mẫu và sử dụng thẻ div thay vào đó, sau đó chuyển các giá trị biểu mẫu bằng cách sử dụng jquery cho máy chủ. Điều này làm việc cho tôi.


3

Vì autocomplete = "off" không hoạt động đối với các trường mật khẩu, người ta phải dựa vào javascript. Đây là một giải pháp đơn giản dựa trên câu trả lời được tìm thấy ở đây.

Thêm thuộc tính data-password-autocomplete = "off" vào trường mật khẩu của bạn:

<input type="password" data-password-autocomplete="off">

Bao gồm các mã sau:

$(function(){
    $('[data-password-autocomplete="off"]').each(function() {
        $(this).prop('type', 'text');
        $('<input type="password"/>').hide().insertBefore(this);
        $(this).focus(function() {
            $(this).prop('type', 'password');
        });
    });     
});

Giải pháp này hoạt động cho cả Chrome và FF.


Windows Firefox 57.0.2 (64-bit) vẫn đang đề xuất lưu mật khẩu sau khi tôi triển khai việc này.
Panu Haaramo

2

Để mọi người nhận ra - thuộc tính 'tự động hoàn thành' hoạt động hầu hết thời gian, nhưng người dùng có quyền lực có thể sử dụng bookmarklet.

Có một trình duyệt lưu mật khẩu của bạn thực sự làm tăng khả năng bảo vệ chống lại keylogging, vì vậy có thể tùy chọn an toàn nhất là lưu mật khẩu trong trình duyệt nhưng bảo vệ chúng bằng mật khẩu chính (ít nhất là trong Firefox).


2
"Nhưng người dùng có quyền có thể khắc phục được" - có thể áp dụng cho hầu hết các tính năng ứng dụng, web hoặc không và không phải là lý do để giới hạn hệ thống. Mọi người cũng có thể viết mật khẩu của họ trên post-it và đặt nó lên màn hình của họ, bạn chỉ có thể làm rất nhiều để bảo mật từ góc độ ứng dụng và cung cấp hành vi mặc định có ý nghĩa (không lưu cục bộ) là một sự khởi đầu.
Niels Keurentjes

2

Tôi có một công việc xung quanh, có thể giúp đỡ.

Bạn có thể thực hiện một hack phông chữ tùy chỉnh. Vì vậy, tạo một phông chữ tùy chỉnh, với tất cả các ký tự là dấu chấm / vòng tròn / ngôi sao chẳng hạn. Sử dụng này như một phông chữ tùy chỉnh cho trang web của bạn. Kiểm tra cách thực hiện điều này trong inkscape: cách tạo phông chữ của riêng bạn

Sau đó, trên biểu mẫu đăng nhập của bạn sử dụng:

<form autocomplete='off'  ...>
   <input type="text" name="email" ...>
   <input type="text" name="password" class="password" autocomplete='off' ...>
   <input type=submit>
</form>

Sau đó thêm css của bạn:

@font-face {
    font-family: 'myCustomfont';
    src: url('myCustomfont.eot');
    src: url('myCustomfont?#iefix') format('embedded-opentype'),
         url('myCustomfont.woff') format('woff'),
         url('myCustomfont.ttf') format('truetype'),
         url('myCustomfont.svg#myCustomfont') format('svg');
    font-weight: normal;
    font-style: normal;

}
.password {
  font-family:'myCustomfont';
}

Khá nhiều trình duyệt tương thích. Tôi đã thử IE6 +, FF, Safari và Chrome. Chỉ cần đảm bảo rằng phông chữ oet mà bạn chuyển đổi không bị hỏng. Hy vọng nó giúp?


1
thực sự giải pháp gọn gàng có một chữ mật khẩu đây
andrew

6
Nếu bạn sử dụng một giải pháp như vậy, bạn cần tính đến việc người dùng có thể tự do sao chép văn bản đã nhập vào trường mật khẩu trông giống nhau này. Chức năng sao chép và cắt bị vô hiệu hóa trên các trường mật khẩu thực.

2

Cách đơn giản nhất để giải quyết vấn đề này là đặt các trường INPUT bên ngoài thẻ FORM và thêm hai trường ẩn bên trong thẻ FORM. Sau đó, trong một trình lắng nghe sự kiện gửi trước khi dữ liệu biểu mẫu được gửi đến máy chủ sao chép các giá trị từ đầu vào hiển thị sang các giá trị vô hình.

Đây là một ví dụ (bạn không thể chạy nó ở đây, vì hành động biểu mẫu không được đặt thành tập lệnh đăng nhập thực sự):

<!doctype html>
<html>
<head>
  <title>Login & Save password test</title>
  <meta charset="utf-8">
  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
</head>

  <body>
      <!-- the following fields will show on page, but are not part of the form -->
      <input class="username" type="text" placeholder="Username" />
      <input class="password" type="password" placeholder="Password" />

      <form id="loginForm" action="login.aspx" method="post">
        <!-- thw following two fields are part of the form, but are not visible -->
        <input name="username" id="username" type="hidden" />
        <input name="password" id="password" type="hidden" />
        <!-- standard submit button -->
        <button type="submit">Login</button>
      </form>

    <script>
      // attache a event listener which will get called just before the form data is sent to server
      $('form').submit(function(ev) {
        console.log('xxx');
        // read the value from the visible INPUT and save it to invisible one
        // ... so that it gets sent to the server
        $('#username').val($('.username').val());
        $('#password').val($('.password').val());
      });
    </script>

  </body>
</html>


Windows Firefox 57.0.2 (64-bit) vẫn đang đề xuất lưu mật khẩu sau khi tôi triển khai việc này.
Panu Haaramo

tốt, đây chỉ là một bản hack, có thể ngừng hoạt động bất cứ lúc nào :)
đầu gối

đây là lựa chọn tốt nhất chỉ cần xóa trường mật khẩu trước khi gửi: $ ('. password'). val ('')
ebelendez

2

Cách giải quyết js (jquery) của tôi là thay đổi loại nhập mật khẩu thành văn bản trên biểu mẫu gửi . Mật khẩu có thể hiển thị trong một giây, vì vậy tôi cũng ẩn đầu vào ngay trước đó. Tôi thà không sử dụng điều này cho các hình thức đăng nhập , nhưng nó rất hữu ích (cùng với autocomplete = "off"), ví dụ như bên trong phần quản trị của trang web.

Hãy thử đặt cái này vào trong bàn điều khiển (với jquery), trước khi bạn gửi biểu mẫu.

$('form').submit(function(event) {
    $(this).find('input[type=password]').css('visibility', 'hidden').attr('type', 'text');
});

Đã thử nghiệm trên Chrome 44.0.2403.157 (64-bit).


1
Điều này thực sự hoạt động. Điều này ngăn trình duyệt lưu mật khẩu. Để ngăn hiển thị mật khẩu, bạn có thể bọc trường nhập trong một div ẩn. Và bạn đã có thể làm điều này nếu DOM được tải, không cần phải đợi cho đến khi bạn gửi biểu mẫu.
Phà Kranenburg

Hoạt động trên IE 11.0.9600.18161!
Lu55

Điều đó đúng. Bây giờ tôi đã thử điều này trong FF 44.0.2 và bản hack này không hoạt động nữa ... thật đáng tiếc. Trong Chrome này vẫn hoạt động.
ovalek

Bạn có thể thay thế đầu vào [type = submit] hoặc nút [type = submit] bằng nút thông thường [type = button] và thực hiện việc này trong trình xử lý onclick. Nếu không có [type = submit] trong biểu mẫu, nó cũng sẽ ngăn không cho biểu mẫu được gửi bằng phím enter và dấu nhắc lưu mật khẩu hiển thị.
Steven Don

2

Tôi đã thử nghiệm rất nhiều giải pháp. Tên trường mật khẩu động, nhiều trường mật khẩu (vô hình đối với giả mạo), thay đổi loại đầu vào từ "văn bản" thành "mật khẩu", autocomplete = "tắt", autocomplete = "new-password", ... nhưng không giải quyết được gì với gần đây trình duyệt.

Để thoát khỏi mật khẩu, cuối cùng tôi đã coi mật khẩu là trường nhập và "làm mờ" văn bản đã gõ.

Nó ít "an toàn" hơn trường mật khẩu riêng vì việc chọn văn bản đã nhập sẽ hiển thị dưới dạng văn bản rõ ràng, nhưng mật khẩu không được ghi nhớ. Nó cũng phụ thuộc vào việc kích hoạt Javascript.

Bạn sẽ ước tính rủi ro khi sử dụng tùy chọn ghi nhớ đề xuất và mật khẩu bên dưới từ bộ điều hướng.

Mặc dù người dùng có thể quản lý mật khẩu ghi nhớ (mất cân bằng trên mỗi trang web), nhưng nó tốt cho máy tính cá nhân, không phải cho máy tính "công cộng" hoặc dùng chung.

Tôi là trường hợp của tôi cho một ERP chạy trên các máy tính dùng chung, vì vậy tôi sẽ thử nó với giải pháp của tôi dưới đây.

<input style="background-color: rgb(239, 179, 196); color: black; text-shadow: none;" name="password" size="10" maxlength="30" onfocus="this.value='';this.style.color='black'; this.style.textShadow='none';" onkeypress="this.style.color='transparent'; this.style.textShadow='1px 1px 6px green';" autocomplete="off" type="text">

1

Markus nêu lên một điểm tuyệt vời. Tôi quyết định tra cứu autocompletethuộc tính và nhận được những điều sau đây:

Nhược điểm duy nhất khi sử dụng thuộc tính này là nó không chuẩn (nó hoạt động trong trình duyệt IE và Mozilla) và sẽ khiến xác thực XHTML không thành công. Tôi nghĩ rằng đây là một trường hợp hợp lý để phá vỡ xác nhận tuy nhiên. ( nguồn )

Vì vậy, tôi sẽ phải nói rằng mặc dù nó không hoạt động 100% trên bảng nhưng nó được xử lý trong các trình duyệt chính vì vậy đây là một giải pháp tuyệt vời.


Tôi đang gặp vấn đề về việc xác nhận theo tiêu chuẩn w3c. Điều tôi muốn là chức năng này cho một trang web ngân hàng di động. Tôi đã giả định rằng các trình duyệt di động đủ nghiêm ngặt và đôi khi có thể làm hỏng biểu mẫu nếu một số thuộc tính không hợp lệ đang được sử dụng. Bạn đề nghị gì trong trường hợp này?
asg

2
Tôi nghĩ đó là một kiểu suy nghĩ cũ. Nhiều trình duyệt di động gần đây được xây dựng từ WebKit và hỗ trợ hoặc bỏ qua thuộc tính này một cách duyên dáng. Tôi không biết làm thế nào các quốc gia khác, hoặc các trình duyệt trong điện thoại di động cũ xử lý việc này nhưng xử lý một cách duyên dáng các thuộc tính / yếu tố không được biết đến là nền tảng cho trình duyệt tốt. Nó "bằng chứng trong tương lai" để trình duyệt không bị hỏng khi web phát triển. Nó có thể tụt lại phía sau (không triển khai các tính năng mới) nhưng nó sẽ không bị hỏng. Hy vọng rằng sẽ giúp =)
Joseph Pecoraro

1
Nó nên là một nhận xét cho câu trả lời được đề cập hơn là một câu trả lời cho chính câu hỏi.
viam0Zah

1

Tôi đã thử ở trên autocomplete="off"và bất cứ điều gì thành công. Nếu bạn đang sử dụng js góc, khuyến nghị của tôi là đi bằng nút và nhấp chuột.

<button type="button" class="" ng-click="vm.login()" />

Điều này đã có một câu trả lời được chấp nhận tôi thêm điều này nếu ai đó không thể giải quyết vấn đề với câu trả lời được chấp nhận mà anh ta có thể đi với cơ chế của tôi.

Cảm ơn câu hỏi và câu trả lời.


điều này rõ ràng là phá vỡ nhấn enterhoặc returnphím để gửi một hình thức mặc dù.
8eecf0d2 ngày

0

Một cách tôi biết là sử dụng (ví dụ) JavaScript để sao chép giá trị ra khỏi trường mật khẩu trước khi gửi biểu mẫu.

Vấn đề chính với điều này là giải pháp được gắn với JavaScript.

Sau đó, một lần nữa, nếu nó có thể được gắn với JavaScript, bạn cũng có thể băm mật khẩu ở phía máy khách trước khi gửi yêu cầu đến máy chủ.


Băm ở phía máy khách không thể thay thế cho băm ở phía máy chủ. Tôi không chắc chắn liệu nó có giúp được gì không (nếu được thực hiện thêm).
Brilliand

2
Cho phép băm ở phía máy khách là nguy hiểm vì điều đó có nghĩa là kẻ tấn công không cần bẻ khóa mật khẩu từ hàm băm, họ chỉ cần sử dụng hàm băm để đăng nhập. Băm trở nên tương đương với mật khẩu.
rjmunro

Tôi đồng ý với Brilliand rằng hàm băm trên máy khách chỉ hữu ích nếu bạn cũng có hàm băm trên máy chủ trước khi lưu mật khẩu trong cơ sở dữ liệu của bạn. Tuy nhiên, có một hàm băm ở phía khách hàng có thể giúp đỡ một số vấn đề nhất định với đàn ông ở giữa. Điều này đang được nói, vì mã sẽ có sẵn (ít nhất là trên các trang web công cộng) cho tin tặc, có lẽ nó không hữu ích như vẻ ngoài của nó.
Alexis Wilke

0

Vấn đề thực sự sâu sắc hơn nhiều so với việc chỉ thêm các thuộc tính vào HTML của bạn - đây là mối quan tâm bảo mật phổ biến, đó là lý do tại sao mọi người phát minh ra các khóa phần cứng và những thứ điên rồ khác để bảo mật.

Hãy tưởng tượng bạn đã tự động hoàn thành = "tắt" hoạt động hoàn hảo trong tất cả các trình duyệt. Điều đó sẽ giúp với an ninh? Dĩ nhiên là không. Người dùng sẽ ghi lại mật khẩu của họ trong sách giáo khoa, trên nhãn dán được gắn vào màn hình của họ, nơi mọi khách truy cập văn phòng có thể nhìn thấy chúng, lưu chúng vào các tệp văn bản trên máy tính để bàn, v.v.

Nói chung, ứng dụng web và nhà phát triển web không chịu trách nhiệm dưới bất kỳ hình thức nào đối với bảo mật người dùng cuối. Người dùng cuối chỉ có thể tự bảo vệ mình. Lý tưởng nhất, họ PHẢI giữ tất cả mật khẩu trong đầu và sử dụng chức năng đặt lại mật khẩu (hoặc quản trị viên liên hệ) trong trường hợp họ quên nó. Nếu không, sẽ luôn có nguy cơ mật khẩu có thể bị nhìn thấy và đánh cắp bằng cách nào đó.

Vì vậy, hoặc bạn có một số chính sách bảo mật điên rồ với các khóa phần cứng (như, một số ngân hàng cung cấp dịch vụ ngân hàng Internet về cơ bản sử dụng xác thực hai yếu tố) hoặc về cơ bản KHÔNG CÓ BẢO MẬT. Tất nhiên, điều này hơi quá đáng. Điều quan trọng là phải hiểu những gì bạn đang cố gắng bảo vệ chống lại:

  1. Không được phép truy cập. Hình thức đăng nhập đơn giản nhất là đủ về cơ bản. Đôi khi có các biện pháp bổ sung được thực hiện như câu hỏi bảo mật ngẫu nhiên, CAPTCHA, tăng mật khẩu, v.v.
  2. Thông tin đánh hơi. HTTPS là PHẢI nếu mọi người truy cập ứng dụng web của bạn từ các điểm truy cập Wi-Fi công cộng, v.v. Đề cập rằng ngay cả khi có HTTPS, người dùng của bạn cần thay đổi mật khẩu thường xuyên.
  3. Tấn công nội bộ. Có hai ví dụ như vậy, bắt đầu từ việc đánh cắp mật khẩu đơn giản từ trình duyệt hoặc những mật khẩu bạn đã ghi ở đâu đó trên bàn (không yêu cầu bất kỳ kỹ năng CNTT nào) và kết thúc bằng phiên giả mạo và chặn lưu lượng truy cập mạng cục bộ (thậm chí được mã hóa) và tiếp tục truy cập ứng dụng web giống như nó là một người dùng cuối khác.

Trong bài đăng cụ thể này, tôi có thể thấy các yêu cầu không thỏa đáng đặt ra cho nhà phát triển mà anh ta sẽ không bao giờ có thể giải quyết do bản chất của vấn đề - bảo mật người dùng cuối. Quan điểm chủ quan của tôi là về cơ bản, nhà phát triển nên nói KHÔNG và chỉ vào vấn đề yêu cầu thay vì lãng phí thời gian cho các nhiệm vụ đó, một cách trung thực. Điều này không hoàn toàn làm cho hệ thống của bạn an toàn hơn, nó sẽ dẫn đến các trường hợp có nhãn dán trên màn hình. Thật không may, một số ông chủ chỉ nghe những gì họ muốn nghe. Tuy nhiên, nếu tôi là bạn, tôi sẽ cố gắng giải thích vấn đề thực sự đến từ đâu và tự động hoàn thành = "tắt" sẽ không giải quyết được trừ khi điều đó sẽ buộc người dùng giữ tất cả mật khẩu của họ trong đầu! Nhà phát triển cuối cùng không thể bảo vệ người dùng hoàn toàn,


0

Đối mặt với cùng một vấn đề HIPAA và tìm thấy một giải pháp tương đối dễ dàng,

  1. Tạo một trường mật khẩu ẩn với tên trường là một mảng.

    <input type="password" name="password[]" style="display:none" />
    
  2. Sử dụng cùng một mảng cho trường mật khẩu thực tế.

    <input type="password" name="password[]" />
    

Trình duyệt (Chrome) có thể nhắc bạn "Lưu mật khẩu" nhưng bất kể người dùng chọn lưu, lần sau khi họ đăng nhập mật khẩu sẽ tự động điền vào trường mật khẩu ẩn, vị trí số 0 trong mảng, để trống vị trí số 1.

Tôi đã thử xác định mảng, chẳng hạn như "password [part2]" nhưng nó vẫn nhớ. Tôi nghĩ rằng nó sẽ ném nó đi nếu đó là một mảng không được lập trình bởi vì nó không có lựa chọn nào khác ngoài việc thả nó ở vị trí đầu tiên.

Sau đó, bạn sử dụng ngôn ngữ lập trình bạn chọn để truy cập mảng, ví dụ PHP

echo $_POST['password'][1];

1
Với điều này, bạn đang che giấu một vấn đề bảo mật - hàm băm của mật khẩu vẫn đang được lưu trong bộ đệm của trình duyệt.
Alexander Burakevych

1
Ông có thể làm rõ? Mật khẩu sẽ được gửi dưới dạng văn bản đơn giản bằng POST. Theo như tôi đã đọc, các yêu cầu POST không thể được lưu trữ. Bạn đang nói có một cách khác để sử dụng POST để gửi dữ liệu? Hoặc bạn đang nói rằng mật khẩu được lưu trữ trong trình duyệt, bởi vì nó không lưu trữ mật khẩu mà là giá trị trống ở đầu mảng, bạn đã thử phương pháp này chưa?
Mike

0

Vì hầu hết các autocompleteđề xuất, bao gồm câu trả lời được chấp nhận, không hoạt động trong các trình duyệt web hiện nay (ví dụ: trình quản lý mật khẩu trình duyệt web bỏ qua autocomplete), một giải pháp mới hơn là hoán đổi giữa passwordtextcác loại và làm cho màu nền khớp với màu văn bản khi trường là một trường văn bản đơn giản, tiếp tục ẩn mật khẩu trong khi là trường mật khẩu thực khi người dùng (hoặc một chương trình như KeePass) đang nhập mật khẩu. Các trình duyệt không yêu cầu lưu mật khẩu được lưu trữ trong các trường văn bản thuần túy.

Ưu điểm của phương pháp này là cho phép tăng cường lũy ​​tiến và do đó không yêu cầu Javascript để một trường hoạt động như một trường mật khẩu bình thường (thay vào đó bạn cũng có thể bắt đầu với một trường văn bản đơn giản và áp dụng cách tiếp cận tương tự nhưng đó không thực sự là HIPAA Tuân thủ PHI / PII). Cách tiếp cận này cũng không phụ thuộc vào các biểu mẫu / trường ẩn mà có thể không nhất thiết phải được gửi đến máy chủ (vì chúng bị ẩn) và một số thủ thuật đó cũng không hoạt động trong một số trình duyệt hiện đại.

Plugin jQuery:

https://github.com/cubiclesoft/php-flexforms-modules/blob/master/password-manager/jquery.stoppasswordmanager.js

Mã nguồn có liên quan từ liên kết trên:

(function($) {
$.fn.StopPasswordManager = function() {
    return this.each(function() {
        var $this = $(this);

        $this.addClass('no-print');
        $this.attr('data-background-color', $this.css('background-color'));
        $this.css('background-color', $this.css('color'));
        $this.attr('type', 'text');
        $this.attr('autocomplete', 'off');

        $this.focus(function() {
            $this.attr('type', 'password');
            $this.css('background-color', $this.attr('data-background-color'));
        });

        $this.blur(function() {
            $this.css('background-color', $this.css('color'));
            $this.attr('type', 'text');
            $this[0].selectionStart = $this[0].selectionEnd;
        });

        $this.on('keydown', function(e) {
            if (e.keyCode == 13)
            {
                $this.css('background-color', $this.css('color'));
                $this.attr('type', 'text');
                $this[0].selectionStart = $this[0].selectionEnd;
            }
        });
    });
}
}(jQuery));

Bản giới thiệu:

https://barebonescms.com/demos/admin_pack/admin.php

Nhấp vào "Thêm mục nhập" trong menu và sau đó cuộn xuống cuối trang để "Mô-đun: Dừng Trình quản lý mật khẩu".

Tuyên bố miễn trừ trách nhiệm: Mặc dù phương pháp này hiệu quả với các cá nhân nhìn thấy, có thể có vấn đề với phần mềm đọc màn hình. Ví dụ: trình đọc màn hình có thể đọc to mật khẩu của người dùng vì nó nhìn thấy trường văn bản đơn giản. Cũng có thể có những hậu quả không lường trước được khi sử dụng plugin trên. Việc thay đổi chức năng trình duyệt web tích hợp nên được thực hiện một cách tiết kiệm với việc kiểm tra nhiều điều kiện và trường hợp cạnh khác nhau.


-1

Có cách nào để một trang web nói với trình duyệt không cung cấp để nhớ mật khẩu không?

Trang web cho trình duyệt biết đó là mật khẩu bằng cách sử dụng <input type="password">. Vì vậy, nếu bạn phải làm điều này từ góc độ trang web thì bạn sẽ phải thay đổi điều đó. (Rõ ràng tôi không khuyên bạn điều này).

Giải pháp tốt nhất là người dùng cấu hình trình duyệt của họ để nó không nhớ mật khẩu.


3
Rõ ràng là bạn không khuyên bạn nên thay đổi trường loại đầu vào? Một sự giải thích các vấn đề bảo mật sẽ hữu ích.
Karl

1
@karl: vì phải gõ mật khẩu khi mở cho phép "lướt vai", quá trình lượm lặt mật khẩu bằng cách nhìn vào màn hình cho đến khi nó được gõ.
David Schmitt

Không chỉ lướt vai, mà phần mềm gián điệp hoặc vi rút có thể xem màn hình của bạn và xem những gì đã được nhập vào các trường văn bản.
Karl

6
@karl: Nếu bạn đã có phần mềm gián điệp / vi-rút trên máy tính thì không có bảo vệ dấu hoa thị nào sẽ cứu bạn. Không có gì khó khăn hơn cho một ứng dụng được cài đặt để chặn những gì được nhập vào trường 'mật khẩu' so với trường hợp tương tự đối với trường văn bản thuần túy.
Markus Olsson

3
Ngoài ra, nếu trình duyệt thấy một kiểu nhập văn bản thông thường thay vì nhập mật khẩu, có khả năng nó sẽ lấy mật khẩu trong cơ sở dữ liệu tự động hoàn thành thay vì cơ sở dữ liệu mật khẩu ... và sau đó đề xuất hoặc thậm chí tự động điền nó trên một số trang web không liên quan! Vì vậy, bạn thực sự thậm chí còn tồi tệ hơn so với khi bạn bắt đầu.
zwol

-1

Nếu bạn không muốn tin tưởng cờ tự động hoàn thành, bạn có thể đảm bảo rằng người dùng nhập vào hộp bằng sự kiện onchange. Mã dưới đây là một hình thức HTML đơn giản. Phần tử biểu mẫu ẩn password_edited bắt đầu được đặt thành 0. Khi giá trị của mật khẩu được thay đổi, JavaScript ở trên cùng (hàm pw_edited) thay đổi giá trị thành 1. Khi nhấn nút, nó sẽ kiểm tra mã giá trị ở đây trước khi gửi biểu mẫu . Bằng cách đó, ngay cả khi trình duyệt bỏ qua bạn và tự động hoàn thành trường, người dùng không thể vượt qua trang đăng nhập mà không cần nhập vào trường mật khẩu. Ngoài ra, đảm bảo để trống trường mật khẩu khi tiêu điểm được đặt. Nếu không, bạn có thể thêm một ký tự ở cuối, sau đó quay lại và xóa nó để lừa hệ thống. Tôi khuyên bạn nên thêm autocomplete = "off" vào mật khẩu, nhưng ví dụ này cho thấy cách mã dự phòng hoạt động.

<html>
  <head>
    <script>
      function pw_edited() {
        document.this_form.password_edited.value = 1;
      }
      function pw_blank() {
        document.this_form.password.value = "";
      }
      function submitf() {
        if(document.this_form.password_edited.value < 1) {
          alert("Please Enter Your Password!");
        }
        else {
         document.this_form.submit();
        }
      }
    </script>
  </head>
  <body>
    <form name="this_form" method="post" action="../../cgi-bin/yourscript.cgi?login">
      <div style="padding-left:25px;">
        <p>
          <label>User:</label>
          <input name="user_name" type="text" class="input" value="" size="30" maxlength="60">
        </p>
        <p>
          <label>Password:</label>
          <input name="password" type="password" class="input" size="20" value="" maxlength="50" onfocus="pw_blank();" onchange="pw_edited();">
        </p>
        <p>
          <span id="error_msg"></span>
        </p>
        <p>
          <input type="hidden" name="password_edited" value="0">
          <input name="submitform" type="button" class="button" value="Login" onclick="return submitf();">
        </p>
      </div>
    </form>
  </body>
</html>

-1

autocomplete = "off" không hoạt động để vô hiệu hóa trình quản lý mật khẩu trong Firefox 31 và rất có thể không có trong một số phiên bản trước đó.

Kiểm tra cuộc thảo luận tại mozilla về vấn đề này: https://ormszilla.mozilla.org/show_orms.cgi?id=956906

Chúng tôi muốn sử dụng trường mật khẩu thứ hai để nhập mật khẩu một lần được tạo bởi mã thông báo. Bây giờ chúng tôi đang sử dụng một văn bản đầu vào thay vì nhập mật khẩu. :-(


-1

Tôi đã được giao một nhiệm vụ tương tự để vô hiệu hóa việc tự động điền tên đăng nhập và mật khẩu bằng trình duyệt, sau rất nhiều lần thử và lỗi tôi thấy giải pháp dưới đây là tối ưu. Chỉ cần thêm các điều khiển dưới đây trước khi kiểm soát ban đầu của bạn.

<input type="text" style="display:none">
<input type="text" name="OriginalLoginTextBox">

<input type="password" style="display:none">
<input type="text" name="OriginalPasswordTextBox">

Điều này đang hoạt động tốt cho IE11 và Chrome 44.0.2403.107


-2

autocomplete = "off" hoạt động với hầu hết các trình duyệt hiện đại, nhưng một phương pháp khác mà tôi đã sử dụng thành công với Epiphany (trình duyệt hỗ trợ WebKit cho Gnome) là lưu trữ tiền tố được tạo ngẫu nhiên trong trạng thái phiên (hoặc trường ẩn, tôi tình cờ có một biến phù hợp trong trạng thái phiên đã có) và sử dụng biến này để thay đổi tên của các trường. Epiphany vẫn muốn lưu mật khẩu, nhưng khi quay lại biểu mẫu, nó sẽ không điền vào các trường.


Điều đó thậm chí còn tệ hơn việc lưu trữ chúng theo cách thông thường, vì bây giờ người dùng không thấy rằng mật khẩu đã được lưu trong khi không ngăn chặn kẻ tấn công trích xuất mật khẩu từ cửa hàng.
CodeInChaos

-2

Tôi chưa có vấn đề gì khi sử dụng phương pháp này:

Sử dụng autocomplete = "off", thêm trường mật khẩu ẩn và sau đó một trường không ẩn khác. Trình duyệt cố gắng tự động hoàn thành cái ẩn nếu nó không tôn trọng autocomplete = "off"


-2

Một giải pháp khác là tạo POST bằng cách sử dụng một hình thức ẩn trong đó tất cả các đầu vào thuộc loại ẩn. Các hình thức hiển thị sẽ sử dụng đầu vào của loại "mật khẩu". Biểu mẫu thứ hai sẽ không bao giờ được gửi và do đó trình duyệt không thể chặn mọi hoạt động đăng nhập.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.