html - 크롬 자동완성 끄기




웹 양식 필드/입력 태그에서 브라우저 자동 완성을 어떻게 비활성화합니까? (20)

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>

비밀번호 가 box 유형 인 상자를 찾으면 Chrome은 항상 자동 autocomplete = "new-password" 상자를 표시하기에 충분한 데이터를 autocomplete = "new-password" .

이것은 나를 위해 잘 작동합니다.

참고 : F12를 사용하면 변경 사항이 적용되고 여러 번 브라우저가 페이지를 캐시에 저장하므로 작동하지 않는다는 나쁜 인상을 주었지만 브라우저가 실제로 변경 사항을 가져 오지 않았습니다.

특정 input (또는 form field )에 대해 주요 브라우저에서 autocomplete 을 어떻게 비활성화합니까?


Firefox 30은 암호에 대해 autocomplete="off" 를 무시하고 대신 암호를 클라이언트에 저장할 것인지 묻는 메시지를 표시합니다. 2014 년 5 월 5 일의 다음 commentary 유의하십시오.

  • 암호 관리자는 항상 암호를 저장할 것인지 묻습니다. 비밀번호는 사용자의 허가없이 저장되지 않습니다.
  • 우리는 IE와 Chrome에 이어이 변경을 구현 한 세 번째 브라우저입니다.

Mozilla Developer Network 문서에 따르면 부울 양식 요소 속성 autocomplete 양식 데이터가 이전 브라우저에서 캐시되지 않도록합니다.

<input type="text" name="foo" autocomplete="off" />

게임에 조금 늦었지만 ...이 문제에 부딪 치고 몇 가지 실패를 시도했지만 MDN 에서 찾은 것이 MDN

경우에 따라 autocomplete 속성이 off로 설정되어 있어도 브라우저는 자동 완성 값을 계속 제안합니다. 이 예기치 않은 동작은 개발자에게 매우 어려울 수 있습니다. 실제로 완료를 강제하지 않는 트릭은 속성에 임의의 문자열을 할당하는 것입니다.

autocomplete="nope"

관련되거나 실제로는 완전히 반대되는 메모에서-

"위에서 언급 한 양식의 사용자이고 자동 완성 기능을 다시 사용하려면이 책갈피 목록 페이지 에서 '암호 기억'책갈피를 사용 하십시오 . 페이지의 모든 양식에서 모든 autocomplete="off" 속성이 제거됩니다. 좋은 싸움과 싸우다! "


다른 사람들이 말했듯이 대답은 autocomplete="off"

그러나 일부 사례에 대한 답변과 duplicate 질문으로 인해 끄지 않는 것이 좋습니다. 왜냐하면 특정 경우에 이것을 사용하는 것이 좋은 아이디어 인지 말할 가치가 있다고 생각합니다.

신용 카드 번호를 저장하는 브라우저를 중지하면 사용자가 방치해서는 안됩니다. 너무 많은 사용자는 그것이 문제라는 것을 깨닫지 못할 것입니다.

신용 카드 보안 코드 필드를 끄는 것이 특히 중요합니다. 이 페이지 는 다음과 같이 말합니다.

"보안 코드를 저장하지 마십시오.이 값은 보안 신용 카드를 제공하는 유일한 방법은 실제 신용 카드에서 코드를 읽어야한다는 가정에 따라 달라집니다.이를 제공하는 사람이 실제로 카드를 보유하고 있음을 증명합니다."

문제는 공용 컴퓨터 (사이버 카페, 라이브러리 등) 인 경우 다른 사용자가 카드 세부 정보를 훔치기가 쉽다는 것입니다. 심지어 자신의 컴퓨터에서도 악의적 인 웹 사이트가 자동 완성 데이터를 훔칠있습니다 .


대부분의 주요 브라우저 및 비밀번호 관리자 (올바로 IMHO)는 이제 autocomplete=off 무시 autocomplete=off .

왜? 많은 은행 및 기타 "높은 보안"웹 사이트는 "보안 목적으로"로그인 페이지에 autocomplete=off 을 추가했지만 사람들이 보안 수준이 높은 사이트의 암호를 기억하기 쉽도록 변경하기 때문에 실제로 보안이 저하됩니다. )가 자동 완성에 실패했습니다.

오래 전에 대부분의 암호 관리자는 autocomplete=off 무시하기 시작했으며 이제 브라우저는 사용자 이름 / 암호 입력에 대해서만 동일한 작업을 시작합니다.

불행히도 자동 완성 구현의 버그로 인해 사용자 이름 및 / 또는 암호 정보가 부적절한 양식 필드에 삽입되어 양식 유효성 검사 오류가 발생하거나 사용자가 의도적으로 비워 둔 필드에 실수로 사용자 이름을 삽입하는 경우가 있습니다.

웹 개발자는 무엇을해야합니까?

  • 페이지의 모든 비밀번호 필드를 단독으로 유지할 수 있다면 비밀번호 필드의 존재가 사용자 / 패스 자동 완성에 대한 주요 트리거 인 것처럼 보이므로 시작하는 것이 좋습니다. 그렇지 않으면 아래 팁을 읽으십시오.
  • Safari 는 2 개의 비밀번호 필드가 있으며이 경우 로그인 양식이 아닌 비밀번호 변경 양식이어야한다고 가정하면 자동 완성을 비활성화합니다. 따라서 허용되는 모든 양식에 대해 2 개의 비밀번호 필드 (신규 및 신규 확인)를 사용하십시오.
  • 불행히도 Chrome 34는 비밀번호 필드가 표시 될 때마다 사용자 / 패스로 필드를 자동으로 채 웁니다. 이것은 사파리의 행동을 바꿀 수있는 아주 나쁜 버그입니다. 그러나 양식 맨 위에 이것을 추가하면 비밀번호 자동 완성이 사용 중지 된 것으로 보입니다.

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

아직 IE 또는 Firefox를 철저히 조사하지는 않았지만 다른 사람들이 의견에 정보가 있으면 답변을 업데이트하게되어 기쁩니다.


세 가지 옵션 : 첫 번째 :

<input type='text' autocomplete='off' />

둘째:

<form action='' autocomplete='off'>

셋째 (자바 스크립트 코드) :

$('input').attr('autocomplete', 'off');

우리는 실제로 한 사이트에 sasb 의 아이디어를 사용 했습니다 . 의사 사무실을 운영하는 의료 소프트웨어 웹 앱이었습니다. 그러나 많은 고객들이 반 공공 터미널을 포함하여 많은 다른 워크 스테이션을 사용하는 외과 의사였습니다. 따라서 자동 저장된 암호의 의미를 이해하지 못하거나주의를 기울이지 않는 의사가 우연히 자신의 로그인 정보에 쉽게 액세스 할 수 없도록하려고했습니다. 물론 이것은 IE8, FF3.1 등에서 개인용 브라우징을 시작하기 이전의 아이디어였습니다. 그럼에도 불구하고, 많은 의사들은 IT가 변경되지 않는 병원에서 구식 브라우저를 사용해야합니다.

따라서 로그인 페이지에서 해당 게시물에 대해서만 작동하는 임의의 필드 이름을 생성했습니다. 예, 편리하지는 않지만 공용 터미널에 로그인 정보를 저장하지 않는 것에 대해 사용자를 겨냥하고 있습니다.


이것은 나를 위해 작동합니다.

<input name="pass" type="password" autocomplete="new-password" />

텍스트, 선택 등의 다른 컨트롤에서도이 전략을 사용할 수 있습니다


임의의 문자를 사용하여 Chrome으로 끝없는 싸움을 해결했습니다. 임의 문자열로 항상 자동 완성을 렌더링하면 아무것도 기억되지 않습니다.

<input name="name" type="text" autocomplete="rutjfkde">

그것이 다른 사람들에게 도움이되기를 바랍니다.


잘못된 XHTML을 피하기 위해 javascript를 사용하여이 속성을 설정할 수 있습니다. jQuery를 사용한 예 :

<input type="text" class="noAutoComplete" ... />

$(function() {
    $('.noAutoComplete').attr('autocomplete', 'off');
});

문제는 자바 스크립트가없는 사용자는 자동 완성 기능을 사용할 수 있다는 것입니다.


최고의 솔루션 :

자동 완성 사용자 이름 (또는 이메일) 및 비밀번호 방지 :

<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" 는 작동하지 않지만 nope 와 같은 임의의 문자열로 변경할 수 있습니다.

다음에서 작동합니다.

  • 크롬 : 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 및 64

  • Firefox : 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57 및 58


추가하려고

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

이외에

autocomplete = "off"

아래와 같이 양식 데이터 ( 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');" >


업데이트 : 다음은 드래그 앤 드롭 , 복사 , 붙여 넣기 등을 방지하는이 접근법을 기반으로 한 전체 예입니다.

<input type="text" name="UserName" style="text-transform:lowercase;" placeholder="Username" 
    autocomplete="off" readonly onfocus="this.removeAttribute('readonly');" 
    oncopy="return false" ondrag="return false" ondrop="return false" 
    onpaste="return false" oncontextmenu="return false" > 

<input type="password" name="Password" placeholder="Password" autocomplete="off" readonly 
    onfocus="this.removeAttribute('readonly');" oncopy="return false" ondrag="return false" 
    ondrop="return false" onpaste="return false" oncontextmenu="return false" >

Google Chrome , Mozilla Firefox , Microsoft Edge 등과 같은 주요 브라우저의 최신 버전에서 테스트되었으며 아무런 문제없이 작동합니다. 이것이 도움이되기를 바랍니다 ...


필드에 비표준 이름과 ID를 사용하십시오. "name"대신 "name_"이 있습니다. 그러면 브라우저는이를 이름 필드로 간주하지 않습니다. 그것에 대한 가장 좋은 부분은 모든 필드가 아닌 일부 필드 에이 작업을 수행 할 수 있으며 모든 필드가 아닌 일부 필드를 자동 완성한다는 것입니다.


autocomplete=off 외에도 양식 필드 이름을 페이지를 생성하는 코드에서 무작위로 지정할 수 있습니다 (예 : 세션 끝에 문자열을 이름 끝에 추가).

양식을 제출하면 서버 측에서 처리하기 전에 해당 부분을 제거 할 수 있습니다. 이렇게하면 웹 브라우저가 해당 필드의 컨텍스트를 찾지 못하고 공격자가 양식 제출에 대한 필드 이름을 추측 할 수 없으므로 XSRF 공격을 방지하는 데 도움이 될 수 있습니다.


여기 있습니다 :

function turnOnPasswordStyle() {
  $('#inputpassword').attr('type', "password");
}
<input oninput="turnOnPasswordStyle()" id="inputpassword" type="text">


autocomplete="off"작동하지 않으면 다음을 시도하십시오 .

autocorrect="off" autocapitalize="off" 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>

누군가에게 도움이 되길 바랍니다!


이것은 브라우저가 지금 무시하는 보안 문제입니다. 개발자는 정보가 민감하고 저장되어서는 안된다고 생각하더라도 브라우저는 입력 이름을 사용하여 컨텐츠를 식별하고 저장합니다. 두 요청간에 입력 이름을 다르게하면 문제가 해결됩니다 (그러나 여전히 브라우저 캐시에 저장되며 브라우저 캐시도 증가합니다). 브라우저 설정에서 옵션을 활성화 또는 비활성화하도록 사용자에게 요청하는 것은 좋은 해결책이 아닙니다. 백엔드에서 문제를 해결할 수 있습니다.

여기 내 수정이 있습니다. 내 프레임 워크에서 구현 한 접근 방식입니다. 모든 자동 완성 요소는 다음과 같이 숨겨진 입력으로 생성됩니다.

<? $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']);

또한 브라우저는 이전 요청이나 이전 사용자의 정보를 제안 할 수 없습니다.

브라우저 업데이트가 자동 완성을 무시하고 싶더라도 모든 것이 매력처럼 작동합니다. 그게 문제를 해결하는 가장 좋은 방법이었습니다.


추가해도 autocomplete="off"잘리지 않습니다.

입력 유형 속성을로 변경하십시오 type="search".
Google은 검색 유형의 입력에 자동 완성을 적용하지 않습니다.





autocomplete