IT

LastPass가 양식 작성 중지

lottoking 2020. 8. 14. 08:03
반응형

LastPass가 양식 작성 중지


LastPass 브라우저 확장이 "사용자 이름"이라는 이름의 입력 필드로 HTML 기반 양식을 채우는 것을 방지하는 방법이 있습니까?

이 필드를 사용하여 어떤 소프트웨어도 사용하지 않습니다.

<input type="text" name="username" id="checkusername" maxlength="9" value="1999" class="longinput" style="display:none">

"입력 필드 이름"과 같지 않습니다.


첨가

data-lpignore="true"

입력 필드에 회색 LastPass [...] 상자가되었습니다.

에서 공급 LastPass.com


두 가지 조건이 있어야합니다.

  1. 양식 (안 요소)가 필요 autocomplete="off"속성을
  2. Lastpass 사용자는이 옵션을 활성화해야합니다. Settings > Advanced > Allow pages to disable autofill

따라서 이것은 사용자와 개발자 모두에 달려 있습니다.


나를 위해 일한 것은 양식의 id에 "-search-"라는 단어가 어떤 것입니다 <form id="affiliate-search-form">.- 그리고 lastpass는 양식 입력에 요소를 추가하지 않습니다. 더 간단한 것과 함께 작동 <form id="search">하지만 작동하지 않습니다.<form id="se1rch">


나는 내가 여기 파티에 늦었다는 것을 알고있다 lastpass가 내 양식을 망치는 것을 막으려 고 할 때 이것을 발견했습니다. @takeshin은 자동 완성이 충분하지 않다는 점에서 존재합니다. 나는 기호를 아래의 해킹을 끝까지 위해 아래에 있습니다. 예쁘지는 않지만 아이콘을 제거했습니다.

마지막 통과 개발자가 글을 읽고 권한 사용할 속성을 알려주세요. 이와 같은 것에 의지 할 필요가 없습니다.

form[autocomplete="off"] input[type="text"] {
    background-position: 150% 50% !important;
}

나는 LastPass 사용자 가 입력 입력 속성을 존중 한다고 생각autocomplete="off" 하지만 100 % 확신합니다.

다른 사람들이 지적했듯이 편집하십시오 . 마지막 패스를 구성한 경우에만 작동합니다.


나를 위해 중 하나 일 type=search동일 좀 인 text또는 사용을 role=note.

LastPass-JavaScript를 확인 수는 엄청나게 크며, 거기에서 몇 가지 해결 방법을 사용할 수 있습니다. 내가 본 것에서 4 개의 입력 유형 만 확인 input type=search한 해결 가지 방법이 있습니다.

!c.form && ("text" == c.type || "password" == c.type || "url" == c.type || "email" == c.type) && lpIsVisible(c))

또한 무시 role하는 것처럼 보이는 키워드입니다.

var c = b.getAttribute("role");
switch (c) {
case "navigation":
case "banner":
case "contentinfo":
case "note":
case "search":
case "seealso":
case "columnheader":
case "presentation":
case "toolbar":
case "directory":`

LastPass '를 확인 onloadwff.js하고 26.960 줄의 코드를 준비합니다. :)


입력 ID에 "검색"추가

<input type="text" name="user" id="user-search"/>

파티에 조금 늦었지만 다음과 같이 양식을 수정하여 달성했습니다.

<form autocomplete="off" name="lastpass-disable-search">

나는이 바보가 그것이 양식이라고 생각하게 만드는 것이라고 생각합니다. 그러나 이것은 암호 필드에서는 작동하지 않습니다! 이 경우 Lastpass는 이름 필드를 무시합니다.

이 작업을 수행하는 유일한 방법은 양식 맨 위에 다음을 직접 추가하는 것입니다.

<form autocomplete="off">
    <div id="lp" ><input type="text" /><input type="password" /></div><script type="text/javascript">setTimeout(function(){document.getElementById('lp').style.display = 'none'},75);</script>
</form>

심한 깜박임이 발생하지만 "비밀번호 생성"위젯이 여전히 표시됩니다. 자동 완성 넌센스를 제거합니다. LastPass는 domready가 될 때 기다린 다음 보이는 암호 필드가 있는지 확인하는 위의 모의 필드를 숨기거나 축소 할 수 없습니다.


이 ES6 스타일 코드는 모든 입력 컨트롤 data-lpignore추가하기 때문에 도움이되었습니다 .

const elements = document.getElementsByTagName("INPUT");
for (let element of elements) {
    element.setAttribute("data-lpignore", "true");
}

특정 INPUT 컨트롤에 액세스 가능한 다음과 같이 사용할 수 있습니다.

document.getElementById('userInput').setAttribute("data-lpignore", "true");

또는 클래스 이름으로 수행 할 수 있습니다.

const elements = document.getElementsByClassName('no-last-pass');
for (let element of elements) {
    element.setAttribute("data-lpignore", "true");
}

-검색 이름을 시도했지만 어떤 시도하지 않았습니다. 나를 위해 일한 것은 다음과 가변적이다.

  1. 양식을 자동 완성으로 표시 -autocomplete = "off"
  2. 양식 필드 입력 유형을 텍스트로 변경
  3. 입력을 마스킹하기 위해 CSS에 새 클래스를 추가하고 암호 필드를 시뮬레이션합니다.
  4. css 비트 : input.masker {-webkit-text-security : disc; }

최신 버전의 FF 및 Chrome에서 시도하고 테스트했습니다.


여기에있는 옵션 (자동 완성, data-lpignore 등) 중 어떤 것도 LastPass가 내 양식 필드를 자동으로 채우는 것을 막지 못했습니다. 나는 문제에 대해 좀 더 sledge-hammer 접근 방식을 취하고 name대신 JavaScript를 통해 입력 속성을 비동기 적으로 설정했습니다 . 다음 jQuery 종속 함수 (양식의 onsubmit 이벤트 핸들러에서 호출 됨)가 트릭을 수행했습니다.

function setInputNames() {
    $('#myForm input').each(function(idx, el) {
        el = $(el);
        if (el.attr('tmp-name')) {
            el.attr('name', el.attr('tmp-name'));
        }
    });
}

$('#myForm').submit(setInputNames);

양식에서 나는 단순히 tmp-name동등한 name속성 대신 속성을 사용 했습니다 . 예:

<form id="myForm" method="post" action="/someUrl">
    <input name="username" type="text">
    <input tmp-name="password" type="password">
</form>

업데이트 2019-03-20

namengMessages가 필드 유효성 검사 오류 메시지를 올바르게 표시하기 위해 속성이있는 양식 필드에 따라 AngularJS 때문에 위의 문제가 여전히 발생했습니다.

궁극적으로 LastPass가 내 비밀번호 변경 양식의 비밀번호 필드를 채우는 것을 방지 할 수있는 유일한 해결책은 다음과 같습니다.

  1. input[type=password]완전히 사용하지 말고
  2. 필드 이름에 '비밀번호'가 없어야합니다.

제 경우에는 정상적으로 양식을 제출할 수 있어야하므로 원래 솔루션을 사용하여 필드 이름을 '적시에'업데이트했습니다. 암호 입력 필드를 사용하지 않기 위해이 솔루션이 매우 잘 작동한다는 것을 알았습니다 .

참고 URL : https://stackoverflow.com/questions/20954944/stop-lastpass-filling-out-a-form

반응형