Chrome 60의 지원 중단 및 삭제

조 메들리
조 메들리

거의 모든 Chrome 버전에서 제품, 성능, 웹 플랫폼의 기능과 관련된 수많은 업데이트와 개선사항이 확인되었습니다. 이 문서에서는 6월 8일 현재 베타 버전인 Chrome 60의 지원 중단 및 삭제에 관해 설명합니다. 이 목록은 언제든지 변경될 수 있습니다.

보안

이제 crypto.subtle에 안전한 출처가 필요합니다.

Web Crypto API는 Chrome 37부터 항상 비보안 출처에서 작동했습니다. 강력한 기능을 위해 안전한 출처를 선호한다는 Chrome의 오래된 정책으로 인해 crypto.subtle는 안전한 출처에서만 표시되지 않습니다.

삭제 의도 | Chromium 버그

콘텐츠에 의해 시작된 데이터 URL의 상단 프레임 탐색 삭제

기술 지식이 없는 브라우저 사용자에게는 익숙하지 않기 때문에 data: 스키마가 스푸핑 및 피싱 공격에 사용되는 경우가 증가하고 있습니다. 이를 방지하기 위해 웹페이지가 상단 프레임에서 data: URL을 로드하지 못하도록 차단합니다. 이는 <a> 태그, window.open, window.location 및 유사한 메커니즘에 적용됩니다. data: 스키마는 페이지에 의해 로드되는 리소스에 계속 작동합니다.

이 기능은 Chrome 58에서 지원 중단되었으며 이제 삭제되었습니다.

삭제 의도 | Chromestatus Tracker | Chromium 버그

일부 blob에서 일시적으로 navgator.sendBeacon() 사용 중지

navigator.sendBeacon() 함수는 Chrome 39부터 사용할 수 있습니다. 원래 구현된 대로 함수의 data 인수에는 유형이 CORS 허용 목록에 등록되지 않은 임의의 blob이 포함될 수 있습니다. 이는 잠재적 보안 위협이 될 수 있으나 아직 아무도 악용하지 않은 것입니다. 이 문제를 즉시 해결할 수 있는 적절한 방법은 없으므로 유형이 CORS 허용 목록에 등록되지 않은 blob에서는 sendBeacon()를 더 이상 호출할 수 없습니다.

이 변경사항은 Chrome 60에 구현되었지만 이후 Chrome 59로 다시 병합되었습니다.

Chromium 버그

CSS

그림자 피어싱 하위 조합자가 하위 연결자처럼 동작하도록 설정

CSS 범위 지정 모듈 수준 1의 일부인 섀도우 피어싱 하위 요소 조합자 (>>>)는 특정 상위 요소의 하위 요소가 섀도우 트리 내에 표시될 때도 해당 상위 요소와 일치하도록 되어 있었습니다. 여기에는 몇 가지 제한사항이 있었습니다. 첫째, 사양에 따라 querySelector()과 같은 자바스크립트 호출에서만 사용할 수 있으며 스타일시트에서는 작동하지 않았습니다. 더 중요한 점은 브라우저 공급업체가 Shadow DOM의 한 수준을 벗어나서 작동하도록 만들 수 없다는 것입니다.

이에 따라 하위 조합자는 Shadow DOM v1을 포함한 관련 사양에서 삭제되었습니다. Chromium에서 이 선택기를 삭제하여 웹페이지를 중단하는 대신 섀도우 피어싱 하위 조합자의 별칭을 하위 조합자 별칭으로 선택했습니다. 원래 동작은 Chrome 45에서 지원 중단되었습니다. 새로운 동작은 Chrome 61에서 구현됩니다.

삭제 의도 | Chromestatus Tracker | Chromium 버그

JavaScript

RTCPeerConnection.getStreamById() 지원 중단 및 삭제

약 2년 전 getStreamById()WebRTC 사양에서 삭제되었습니다. 대부분의 다른 브라우저는 이미 구현에서 삭제되었습니다. 이 함수는 거의 사용되지 않는 것으로 보이지만, getStreamById()가 여전히 지원되는 Safari 이외의 Edge 및 WebKit 기반 브라우저와의 상호 운용성 위험도 약간 있는 것으로 보입니다. 대체 구현이 필요한 개발자는 아래의 삭제할 인텐트에서 예시 코드를 확인할 수 있습니다.

Chrome 62에서 삭제됩니다.

삭제 의도 | Chromestatus Tracker | Chromium 버그

SVGPathElement.getPathSegAtLength가 지원 중단되었습니다.

2년이 넘은 시점에 getPathSegAtLength()SVG 사양에서 삭제되었습니다. httpArchive에서는 이 메서드에 관한 조회가 매우 적으므로 Chrome 60에서 지원이 중단됩니다. Chrome 62에서 삭제될 예정이며, 10월 초 또는 중순에 출시될 예정입니다.

지원 중단 예정 | Chromestatus Tracker | Chromium 버그

getContextAttributes()를 플래그 뒤로 이동

getContextAttributes() 함수는 2013년부터 CanvasRenderingContext2D에서 지원되었습니다. 하지만 이 기능은 표준의 일부가 아니었으며 그 이후로 표준의 일부가 되지 않았습니다. 이 기능은 --enable-experimental-canvas-features 명령줄 플래그 뒤에 구현되었어야 하지만 실수로 구현되지는 않았습니다. Chrome 60에서는 이러한 실수가 수정되었습니다. 메서드를 사용하고 있음을 보여주는 데이터가 없기 때문에 이 변경은 안전하다고 생각합니다.

Chromium 버그

Headers.prototype.getAll() 삭제

Headers.prototype.getAll() 함수는 최신 버전의 가져오기 사양에 따라 삭제됩니다.

삭제 의도 | Chromestatus Tracker | Chromium 버그

indexDB.webkitGetDatabaseNames() 삭제

Google은 색인화된 DB가 Chrome에서 비교적 최근에 사용되었고 접두사 지정이 대세였을 때 이 기능을 추가했습니다. API는 적당해 보이는 출처의 기존 데이터베이스 이름 목록을 비동기식으로 반환합니다.

안타깝게도 이 설계에는 결과가 반환되는 즉시 사용되지 않을 수 있으므로 심각한 애플리케이션 로직이 아닌 로깅에만 사용할 수 있다는 점에서 결함이 있습니다. github 문제는 다른 접근 방식이 필요한 대안에 관한 이전 토론을 추적/링크합니다. 개발자들이 안팎으로 관심을 보이긴 하지만, 교차 브라우저 진행의 부재로 인해 이 문제는 라이브러리 작성자가 해결했습니다.

이 기능이 필요한 개발자는 자체 솔루션을 개발해야 합니다. 예를 들어 Dexie.js와 같은 라이브러리는 그 자체로 데이터베이스 이름을 추적하는 또 다른 데이터베이스인 전역 테이블을 사용합니다.

이 기능은 Chrome 58에서 지원 중단되었으며 이제 삭제되었습니다.

삭제 예정 | Chromestatus Tracker | Chromium 버그

WEBKIT_KEYFRAMES_RULE 및 WEBKIT_KEYFRAME_RULE을 삭제합니다.

비표준 WEBKIT_KEYFRAMES_RULEWEBKIT_KEYFRAME_RULE 상수가 CSS 규칙에서 삭제되었습니다. 개발자는 KEYFRAMES_RULEKEYFRAME_RULE를 대신 사용해야 합니다.

삭제 예정 | Chromestatus Tracker | Chromium 버그

사용자 인터페이스

beforeunload 대화상자에 사용자 동작 필요

Chrome 60부터 beforeunload 대화상자는 표시하려고 시도하는 프레임이 사용자 동작 또는 사용자 상호작용을 수신한 경우 (또는 삽입된 프레임에서 이러한 동작을 수신한 경우에만) 표시됩니다. 이는 beforeunload 이벤트 전달의 변경사항이 아닙니다. 단지 대화상자 표시 여부만 변경됩니다.

beforeunload 대화상자는 앱 모달 대화상자입니다. 따라서 본질적으로 사용자에 적대적입니다. 즉, 사용자의 결정에 의문을 제기하여 사용자 탐색에 응답합니다. 이 기능은 긍정적으로 사용할 수 있습니다. 예를 들어 탐색 중 데이터가 손실될 때 사용자에게 경고하는 데 자주 사용됩니다.

페이지에서 beforeunload 대화상자의 텍스트를 제공하는 기능은 오래전에 삭제되었지만 beforeunload 대화상자는 여전히 악용의 소지가 있습니다. 특히 beforeunload 대화상자는 사기 웹사이트의 한 요소로, 오디오 자동재생 및 위협적인 텍스트는 Chromium에서 제공한 '이 페이지에서 나가시겠습니까?'라는 메시지가 우려되는 상황을 제공합니다.

여기서는 바늘을 실로 연결하고 beforeunload 대화상자를 잘 사용하도록 허용하려고 합니다. 사용자의 상태가 손실될 수 있는 경우에 대화상자를 사용하는 것이 좋습니다. 사용자가 페이지와 상호작용한 적이 없는 경우 사용자는 손실될 수 있는 상태를 가질 수 없으므로 이 경우 대화상자를 숨겨서 사용자 데이터가 손실되지 않습니다.