입력 유형 = 암호, 브라우저가 암호를 기억하지 못하도록합니다.


101

<input type="password" />브라우저가 사용자에게 암호를 저장하라는 메시지를 표시 하지 않도록 하는 방법을 본 기억 이 있습니다. 그러나 나는 공백을 그리고있다. 이를 수행하는 HTML 속성이나 JavaScript 트릭이 있습니까?


답변:


123

을 사용해보십시오 autocomplete="off". 그러나 모든 브라우저가 지원하는지 확실하지 않습니다. 여기에 MSDN 문서가 있습니다 .

편집 : 참고 : 대부분의 브라우저는이 속성에 대한 지원을 중단했습니다. autocomplete = "off"는 모든 최신 브라우저와 호환됩니까?를 참조하십시오 .

이것은 웹 사이트 디자이너가 아닌 사용자에게 맡겨야 할 것입니다.


2
또한 HTTPS 및 HTTP 헤더 또는 META 태그를 통해 페이지를 전달하여 캐싱을 방지 할 수 있습니다. 이렇게하면 암호도 저장되지 않습니다 (적어도 Internet Explorer에서는).
doekman apr

유효성 검사와 관련하여 HTML5는 사양에 autocomplete 속성을 추가하므로 이제 괜찮습니다
VictorySaber 2014

9
향후 독자를위한 참고 사항 : 모든 주요 브라우저는 속성을 무시하고 있습니다. ( stackoverflow.com/a/21348793/37706 참조 )
rdans 2014-06-06

@RyanDansie 지적 해 주셔서 감사합니다. 답변을 업데이트했습니다. 오래된 대답은 ... 오래된 것입니다.
tvanfosson 2014-06-06

8
"이것은 웹 사이트 디자이너가 아닌 사용자에게 맡겨야 할 부분입니다." 이를 갖는 데에는 기술적 이유와 비 기술적 이유가 모두 있습니다. 예를 들어 일회성 암호는 기억하면 안됩니다. "PIN의 첫 번째 숫자 입력"이있는 은행 사이트는 또 다른 곳입니다. 비즈니스 분석가가 자신이 암호 필드를 원한다고 결정하고 개발자로부터 선택을 제거 할 수 있다는 사실을 잊지 마십시오.
Sprague 2015

61

<input type="password" autocomplete="off" />

나는 이것을 사용자로서 추가하고 싶습니다. 이것은 매우 성 가시고 극복해야 할 번거 로움 이라고 생각합니다 . 사용자를 악화시킬 가능성이 크므로 사용하지 않는 것이 좋습니다.

암호는 이미 MRU에 저장되어 있지 않으며 올바르게 구성된 공용 컴퓨터는 사용자 이름도 저장하지 않습니다.


23
"사용자를 괴롭히지 마십시오"에 대한 +1. 이것이 바로 이런 종류의 기능이하는 일입니다. 캐싱을 강제 종료하는 사이트와 마찬가지로 뒤로 버튼을 눌러 양식을 지 웁니다. 매우 자극적입니다.
cletus

6
+1 전적으로 동의합니다. 암호를 변경하려는 경우에만 입력하는 관리자 편집 고객 프로필 페이지를위한 것입니다. 이렇게하면 관리자가 고객 정보를 편집 할 때마다 암호를 변경하지 않습니다.
DavGarcia

14
신용 카드 번호 필드에 매우 유용합니다. PayPal의 양식은 모든 브라우저에 저장되며 컴퓨터를 사용하는 사람은 누구나 모든 데이터를 다시 입력 할 수 있으므로 수동으로 이동하여 모든 기억 된 필드를 삭제해야합니다.
Egor Pavlikhin

31
사용자가 로그인과 관련이없는 암호를 설정할 수있는 양식에서 자동 완성을 활성화하는 것이 실제로 더 성가신 옵션입니다. 브라우저는 실제로 아무것도 할 수없는 암호를 저장하도록 제안 할 수 있습니다. 또한 보안이 민감한 문제라면 모든 공용 컴퓨터가 올바르게 구성되었다고 가정하지 않습니다.
jrb

3
일회성 비밀번호로 사용하고 있습니다. jrb가 말했듯이 브라우저가 저장하면 매우 성 가실 것입니다.
Danation

12

다른 방법으로 해결했습니다. 이것을 시도 할 수 있습니다.

<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>

// autocomplete = "off"속성을 추가해야합니다. 또는 입력 상자에 .auto-complete-off 클래스를 추가하고 즐길 수 있습니다.

예:

  <input id="passfld" type="password" autocomplete="off" />
    OR
  <input id="passfld" class="auto-complete-off" type="password"  />

4
이것은 내 시나리오에서 더 나은 솔루션 인 자동 완성을 방지하는 대신 브라우저가 암호를 저장하는 것을 방지합니다.
Pau Fracés 2015 년

감사합니다. 최신 크롬에서 저를 위해 일했습니다. 참고 : 크롬 만 허용되는 내부 시스템에서 사용됩니다. 프로덕션 사이트에서 사용하는 경우 더 많은 테스트를 수행하십시오.
Izion

@AntoVinish, 나는 파이어 폭스 (40)의 내 마지막 솔루션 사업 희망
Sarwar 하산

7

다음을 시도했지만 모든 브라우저에서 작동하는 것 같습니다.

<input id="passfld" type="text" autocomplete="off" />

<script type="text/javascript">
    $(function(){  
        var passElem = $("input#passfld");
        passElem.focus(function() { 
            passElem.prop("type", "password");                                             
        });
    });
</script>

이 방법은 시간 초과 기술을 사용하는 것보다 훨씬 더 안전합니다. 사용자가 입력 필드에 초점을 맞출 때 입력 필드가 암호로 양보 할 것임을 보장하기 때문입니다.


5

보안 문제와 관련하여 보안 컨설턴트가 전체 현장 문제에 대해 알려줄 내용은 다음과 같습니다 (실제 독립 보안 ​​감사에서 가져온 것입니다).

HTML 자동 완성 활성화 됨 – HTML 양식의 암호 필드에 자동 완성 기능이 활성화되어 있습니다. 대부분의 브라우저에는 HTML 양식에 입력 된 사용자 자격 증명을 기억하는 기능이 있습니다.

상대적 위험 : 낮음

영향을받는 시스템 / 장치 : o https : // * ** * *** /

또한 이것이 진정한 개인 데이터를 포함하는 모든 분야를 다루어야한다는 데 동의 합니다. 나는 그 사이트가 [보편적으로 또는 법적 준수 요건에 따라] 안전하게 유지되어야하는 모든 것에 액세스 할 때마다 항상 신용 카드 정보, CVC 코드, 비밀번호, 사용자 이름 등을 입력하도록 강제하는 것이 옳다고 생각합니다. 예 : 구매 양식, 은행 / 신용 사이트, 세금 사이트, 의료 데이터, 연방, 원자력 등 -Stack Overflow 또는 Facebook과 같은 사이트가 아닙니다 .

다른 유형의 사이트-예를 들어 출근 및 퇴근을위한 TimeStar Online-직장에서 항상 동일한 PC / 계정을 사용하기 때문에 해당 사이트에 자격 증명을 저장할 수 없다는 것은 어리석은 일입니다. 이상하게도 Android에서 할 수 있습니다. 하지만 iPad에서는 아닙니다. 공유 PC조차도 다른 사람을 위해 출퇴근을하는 것이 상사를 짜증나게하는 일이 아니기 때문에 그렇게 나쁘지 않을 것입니다. (그들은 들어가서 잘못된 펀치를 삭제해야합니다. 공용 PC에 저장하지 않기 만하면됩니다.)


5
암호를 저장 하지 않으려 는 이유로 여기에 주석을 추가하기 만하면 됩니다. 관리자가 사용자의 비밀번호를 변경할 수있는 사용자 계정이있는 웹 사이트를 유지하고 있습니다. 클라이언트는 현재 Chrome이 사용자 수정 양식을 로그인 양식으로 잘못 식별하기 때문에 모든 사용자에 대해 매번 '비밀번호 변경'양식에 입력 한 비밀번호를 저장하도록 제안하는 것에 분노합니다 . "암호 기억 안 함을 클릭하십시오"와 같은 간단한 지침을 제공하는 것은 분명히 그 이상입니다.
charredUtensil 2014

5
<input type="password" placeholder="Enter New Password" autocomplete="new-password">

여기 있습니다.


2
이것이 바로 방법이며 많은 해결 방법이 있으며 이만큼 간단하며 최신 버전의 Firefox (v67) 및 Chrome (75)으로 테스트되었습니다.
Mariano Ruiz 19

Chrome 80은 양식을 제출 한 후에도 비밀번호를 기억하도록 제안합니다.
Bouke

4

여기에 가장 좋은 대답이 있습니다. 필드 앞에 추가 암호 필드를 넣고을 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="">

사실,이 개 암호 필드 양식에있는 경우는 작동하지만 새 브라우저는 경우에 볼 수 있고 사용할 수 없습니다 2 차 비밀번호를 무시 (
세드릭 사이먼

1
사용 display:none나 (크롬 61 OSX)이 작동하지 않습니다, 그러나 이것은 수행합니다<input type="password" style="position: absolute; top: -1000px;">
존 Hascall

2

그가 어디에서나 작동하는이 쉬운 솔루션을 사용하고있는 이 답변 도 읽으십시오 (Safari 모바일 수정 사항 참조).

<input type="password" readonly onfocus="this.removeAttribute('readonly');"/>

1

JQuery를 사용하고 ID로 항목을 선택할 수 있습니다.

$("input#Password").attr("autocomplete","off");

또는 유형별로 항목을 선택하십시오.

$("input[type='password']").attr("autocomplete","off");

또는 :

순수한 Javascript를 사용할 수 있습니다.

document.getElementById('Password').autocomplete = 'off';


1

autocomplete = off 가 더 이상 사용되지 않는 것으로 보이 므로 더 최신 솔루션을 제안합니다.

암호 필드를 일반 텍스트 필드로 설정하고 CSS를 사용하여 "디스크"로 입력을가립니다. 코드는 다음과 같아야합니다.

<input type="text" class="myPassword" /> 

input .myPassword{
    text-security:disc;
    -webkit-text-security:disc;
    -mox-text-security:disc;
}

이는 파이어 폭스 브라우저에서 제대로 작동하지 않을 수 있으며 추가 해결 방법이 필요합니다. 여기에서 자세히 알아보세요 : https://stackoverflow.com/a/49304708/5477548 .

해결책은 이 링크 에서 가져 왔지만 SO "no-hotlinks"를 준수하기 위해 여기에 요약했습니다.


0

대부분의 주요 브라우저의 경우 외부에 입력을하고 어떤 형식에도 연결하지 않으면 브라우저가 제출이 없다고 생각하게 만듭니다. 이 경우 로그인에 순수 JS 유효성 검사를 사용해야하며 암호 암호화도 필요합니다.

전에:

<form action="..."><input type="password"/></form>

후:

<input type="password"/>

1
그건 그렇고, 이것은 아마도 사용하지 말아야 할 트릭입니다. 양식 태그를 사용하지 않으면 코드가 기본적으로 HTML4가되어 사용자 계정의 유효성을 검사하기가 더 어려워집니다.
Cannicide 17.01.02

0

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"필드이며 웹 페이지 사용자에게 알려진 방식으로 변경 될 수 있습니다.


0

Firefox, Edge 및 Internet Explorer에서 자동 완성 기능을 해제 할 수있는 유일한 방법은 다음과 같은 양식 문에 autocomplete = "false"를 추가하는 것입니다.

  <form action="postingpage.php" autocomplete="false" method="post">

그리고 양식 입력에 autocomplete = "off"를 추가하고 유형을 텍스트로 변경해야합니다.

     <input type="text" autocomplete="off">

이 HTML 코드는 브라우저로 표준화되어야하는 것 같습니다. 형식 유형 = 암호는 브라우저 설정을 무시하도록 수정해야합니다. 내가 가진 유일한 문제는 입력 마스킹을 잃어버린 것입니다. 그러나 밝은면에서 성가신 "이 사이트는 안전하지 않습니다"는 파이어 폭스에 나타나지 않습니다.

나에게는 사용자가 이미 인증되어 있고 내 사용자 이름과 암호 부분이 변경되었으므로 큰 문제는 아닙니다.


2
이렇게하지 마십시오. 데이터는 여전히 네트워크를 통해 일반 텍스트로 전송되며, 이는 처음에 HTTP (HTTPS가 아님)의 전체 문제이므로 "성가신"경고 메시지가 나타납니다. Man In The Middle은 여전히 ​​일반 텍스트 데이터를 볼 수 있고 서버 측 로깅이 다르게 구성 될 수 있기 때문에 사용자가 이미 인증 된 것입니다. HTTPS의 데이터).
Jacob

https는 트래픽을 암호화합니다. 공개 된 인터넷 응용 프로그램의 일부로 이것을 사용하는 경우에도이 작업을 수행합니다. Post 메소드는 북마크를 방지하고 HTML 내부의 PHP 코드의 다중 Iframe은 URL 삽입을 방지합니다. 기술적으로 전체 경로를 입력해야합니다. 배포하는 경우 $ _SERVER 변수를 보는 대신 텍스트로 작성된 기본 URL로 $ _SESSION 변수를로드하는 것이 좋습니다. $ _SERVER [ 'HTTP_HOST'] 및 $ _SERVER [ 'PHP_SELF']는 둘 다 여러 악용이 있기 때문에 비 공용 환경에서만 사용해야합니다.
drtechno 2017

Btw, 내 예는 어떤 식 으로든 인터넷에 연결되지 않은 폐쇄 시스템에 대한 것입니다
drtechno

아무도 "java onclick"으로 실행되는 암호화 체계를 사용하여 암호화 루틴 후 양식을 제출하지 않았습니다.
drtechno
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.