
크롬 URL 표시줄에 URL을 입력할 때, 즉 http://10.10.10.3:80
현재 서버에 연결할 수 없을 때, 크롬 로드 시도를 중지하고 "이 페이지 로드 중지" 버튼을 누르면 URL이 사라집니다. 이건 사악해요!
포트가 잘못되어 다른 포트로 다시 시도하고 싶다고 가정해 보겠습니다. 전체 URL을 다시 입력해야 합니다.
"이 페이지 로드 중지" 버튼을 누르면 URL이 입력한 그대로 유지되므로 수정할 수 있습니다.
대신 이전에 있었던 "마지막으로 성공한 URL"로 대체됩니다.
이 나쁜 기능을 고칠 수 있는 방법이 있나요?
답변1
이 동작은 의도적으로 설계된 것이며 몇 년 전 모든 브라우저의 개발자는 페이지가 잘못된 URL로 표시되는 것을 불가능하게 만들기 위해 많은 노력을 기울였습니다. 이는 이 기술이 악성 코드에 의해 사용되기 전까지는 실제로 가능했습니다.
당신이 요구하는 행동은 보안 허점입니다. 잘못된 URL이 포함된 페이지를 표시할 수 있는 경우 공격자는 자신의 페이지와 함께 귀하의 은행 URL을 표시하여 귀하가 계좌 번호와 비밀번호를 입력하도록 유도한 다음 모든 계좌를 비울 수 있습니다. 이 허점이 닫힐 때까지 실제로 이런 일이 일어났습니다.
잘못된 URL을 표시하는 것은 자동으로 발생하는 새 탭 페이지에서만 가능합니다. 여기서 작동하는 이유는 표시되는 실제 페이지가 없으므로 입력한(잘못된) URL을 표시하지 않을 보안상의 이유가 없기 때문입니다.
이 동작은 Chromium에만 국한되지 않습니다. 내가 만난 모든 브라우저는 정확히 동일한 작업을 수행합니다. 이것이 안전한 작업이기 때문입니다.
또한, 브라우저 개발자들은 던져진 대화 상자가 주소 표시줄을 가리는 것을 불가능하게 만들었습니다. 왜냐하면 이 기술은 공격자가 URL 자체를 수정할 수 없게 되었을 때 거짓 주소 표시줄을 모방하기 위해 즉시 사용되었기 때문입니다.
제가 제공할 수 있는 유일한 해결책은 을 누르기 전에 긴 형식의 URL을 복사하는 것입니다 Enter. 이것이 제가 이미 수행한 작업입니다. 만약을 대비해, 그 전에 CtrlA하는 습관을 들여야 합니다 .CtrlC
공격자가 은행 로그인을 얻기 위해 요청한 옵션을 사용하는 방법은 다음과 같습니다.
- 공격자의 추가 기능 또는 JavaScript 스크립트는
attacker.com/exploit
주소 표시줄을 통해 알 수 있다는 점을 제외하면 은행과 똑같이 생긴 자신의 웹사이트를 표시합니다. - 공격자는 주소 표시줄에 은행의 URL이나 매우 유사한 URL을 갖고 싶어하지만 이를 수행하는 모든 API는 개발자가 신중하게 제거했기 때문에 그럴 수 없습니다.
- 그런 다음 공격자는 은행의 URL과 매우 유사하거나 이름이 정확히 동일하게 표시되는(유니코드 트릭) URL을 사용하여 웹 사이트를 호출합니다.
- 이 웹사이트는 존재하지 않지만 잘못된 URL이 주소 표시줄에 남아 있습니다. 표시된 페이지와 함께 실제 은행 사이트에 있는 것처럼 보입니다.
- 로그인을 하면 몇 초 후에 모든 은행 계좌가 비워집니다. 모든 저축이 안녕입니다. 은행은 이것이 귀하의 잘못이라고 정당하게 주장하며 아무것도 반환하지 않습니다.
답변2
이는 웹 트래픽이 작동하는 방식 때문에 불가능합니다. 각 요청에는 결과 상태가 있거나 필요하며 상태 비저장이 불가능합니다. 이것이 바로 크롬이 연결하려고 했던 주소를 제거하는 이유입니다(보안 측면 제외).
도메인/IP에 대한 연결을 요청하면 결과는 예를 들어 200(정상 페이지 로드), 404(찾을 수 없음), 408(시간 초과) 등이 될 수 있습니다. 상태에 도달하기 전에 요청을 취소하면 다음이 분명해집니다. 취소 작업으로 인해 브라우저에 결과/URL이 표시되지 않으며 "취소된 요청"을 의미하는 HTTP 상태 XXX 코드가 없습니다(http 요청 목록).
불가능은 아무것도 아닙니다. 이 문제를 해결하는 세 가지 가능한 방법은 다음과 같습니다.
- 법적 사안에 대한 확장 프로그램 만들기
- 취소된 요청에 대한 상태(RFC 아님) 를 추가하기 위해 chromium에 패치
xxx
(chromium을 빌드하는 데 매우 오랜 시간이 필요함) - 기본값
timeout
(408)을 줄입니다.패치 없이 크롬에서는 불가능, 그것은 논의된다여기그리고여기또한.- 이로 인해 느린 사이트 시간 초과와 같은 원하지 않는 다른 효과가 발생할 수 있다는 점을 인정하세요.
- 또한 Firefox에서는
network.http.connection-timeout
설정을 통해 이 작업을 수행할 수 있습니다.
답변3
좋은 연습
귀찮음을 피하는 간단한 방법이 있습니다. 또는
키를 누르는 것만큼 간단합니다 . 새 탭이나 새 창을 열고 거기에 새 URL을 작성하는 것입니다.Ctrl TCtrl N
수동으로 중단하는 경우 미리 로드된 페이지가 없으며 URL이 표시줄에서 삭제되지 않습니다.
고치다
이 문제를 해결하려면 업데이트할 때마다 소스 코드를 수동으로 패치하고 다시 컴파일해야 할 수도 있습니다.
소스 코드를 다운로드하고, 포크를 작성하고, 다음 업데이트된 버전 각각에 차이점을 적용하는 것이 유용할 수 있습니다. 하지만 현재의 행동은 사기 시도를 피하기 위해 만들어졌다는 점을 기억하세요... 따라서 위의 모범 사례를 따르세요.
최종 의견(Tl;dr)
올바른 프로그램 설정을 찾는 것보다 행동을 바꾸는 것이 종종 더 쉽다는 것을 알고 있습니다. 그리고 그렇게 되어서는 안 됩니다...
사실 이번에는 우리의 행동을 바꾸고 그것이 좋은 습관으로 간주될 수 있음을 시사하는 심각한 이유가 있습니다.
이 경우 제안은 어떻게 해서든 프로그램의 동작을 변경하는 방법을 찾는 것이 아니라 잠재적인 위험을 피하기 위해 (두 개의 키만 눌러) 동작을 변경하는 것입니다.