100번째 버전 앞둔 크롬·파이어폭스…웹사이트 장애 우려

UA 문자열이 세자릿수 버전 번호 인식 못해 오류

컴퓨팅입력 :2022/02/17 12:52    수정: 2022/02/17 13:11

구글 크롬과 파이어폭스 브라우저가 모두 100번째 버전 출시를 앞둔 가운데, 세계 여러 웹사이트에서 단순하면서 중대한 오류를 일으킬 것으로 예상됐다.

16일(현지시간) 미국 지디넷은 크롬과 파이어폭스 브라우저 100번째 버전이 출시 되면 다수의 웹사이트에서 사용하는 사용자에이전트(UA)가 세자리 숫자를 인식하지 못해 오류를 일으킬 것이라고 경고했다.

구글 크롬과 파이어폭스 브라우저는 올해 100번째 버전을 내놓을 예정이다. 현재 최신 버전은 크롬98, 파이어폭스97이다. 크롬은 오는 3월29일, 파이어폭스는 오는 5월3일 100번째 버전을 출시한다.

크롬의 버전 UA가 세자릿수에서 오류를 일으키는지 확인할 수 있는 사이트

모든 웹브라우저는 서버가 사용자의 브라우저를 식별할 수 있도록 HTTP 헤더로 UA 문자열을 보낸다. 자바스크립트는 'Javascript navigator.userAgent'와도 함께 사용한다. 웹 개발자는 서버 프로그램에서 모든 종류의 방식으로 UA를 사용한다.

브라우저 UA는 '브라우저 이름/majorVersion.minorVersion'의 형식으로 쓰인다. 두 브라우저 최신 버전의 UA는 'Chrome: Mozilla/5.0(Windows NT 10.0, Win64, x64) AppleWebKit/537.36(KHTML, Gecko 등) Chrome/94.0.4606.54 Safari/537.36'와, 'Firefox: Mozilla/5.0(Macintosh, Intel Mac OS X 10.15, rv:96.0) Gecko/20100101 Firefox/96.0'이다.

과거 2000년을 앞두고 벌어졌던 Y2K 문제와 유사하게, 다수의 웹사이트 프로그램이 세 자릿수 UA를 처리할 수 없다.

이미 1부터 9까지 한자릿수 UA에서 10이란 두자릿수 UA로 전환했을 때 오류가 벌어졌었다.

2009년 나온 오페라10은 웹사이트를 정상적으로 렌더링 하지 않았고, 일부 웹사이트는 파이어폭스10을 '파이어폭스 1.0'으로 읽어 파이어폭스10에서 전혀 렌더링 되지 않았다. 100번째 브라우저가 출시됐을 때 이 같은 상황이 벌어질 수 있다.

단일 사양을 따르지 않으면, 브라우저마다 UA 문자열과 사이트별 UA 구문 분석 형식이 다르다. 일부 구문 분석 라이브러리는 세자릿수 주요 버전 번호를 고려하지 않는 하드코딩된 가정 혹은 버그가 있을 수 있다.

최근의 라이브러리는 세자릿수 UA를 문제 없이 처리하지만, 웹 세계 곳곳엔 오래된 구문 분석 라이브러리가 가득하다.

이 사실을 인지하고 있는 구글과 모질라는 여러 대응방안을 내놓고 있다.

그동안 UA를 사용해 특정 브라우저에 제공해야 하는 웹페이지나 서비스를 결정하는 방식이 나쁜 방법이란 생각이 많이 퍼졌다. 그 덕에 여러 웹사이트가 UA의 세자릿수 인식 문제에서 비껴나 있다. 그럼에도 웹개발자 다수가 UA를 오용하고 있어 웹사이트에서 오류 메시지를 브라우저의 100번째 버전에 보낼 가능성이 높다.

구글은 크롬 기능 플래그를 사용해 사이트에 세자릿수 UA 문제가 있는지 확인하도록 하고 있다. 이 기능 플래그는 크롬에서 세자릿수 UA를 보내도록 한다. 그런 다음 테스트 사이트인 'Is Chrome 100 Yet?' 사이트를 방문해 새 UA의 정상 작동 여부를 확인할 수 있다. 그럼 해당 브라우저가 웹사이트에서 문제를 겪는지 체크할 수 있다. 파이어폭스도 유사한 테스트를 제공한다.[☞크롬 안내 페이지 바로가기] [☞파이어폭스 안내 페이지 바로가기]

어느 브라우저든 UA 때문에 중단되는 것을 발견한 경우 수정 전 '웹콤팻(Webcompat)'에 보고서를 제출하고, 일반 UA를 사용할 때 문제가 계속 나타나는지 확인해 다른 종류의 버그를 발견하지 않았는지 확인해야 한다.[☞오류 보고 페이지 바로가기]

크롬과 파이어폭스 설계팀은 예상보다 상황이 더 나빠지는 경우를 대비해 완화 계획을 마련해놨다.

파이어폭스는 사이트 개임 메커니즘을 갖고 있다. 이를 통해 모질라 웹컴팻팀은 깨진 웹사이트를 핫픽스 할 수 있다. 수정 중인 사항을 확인하려면 URL 주소창에 'about:compat'을 입력하면 된다. 100번째 버전을 처리할 수 없어 사이트가 중단되면, 사용자는 99버전을 전송해 수정할 수 있다. 그러나 이는 일반 사용자가 UA를 수시로 수동 변경하도록 하게 된다. 모질라는 문제가 광범위하게 일어날 경우 일시적으로 메이저 버전을 99로 돌려 다른 방안을 테스트할 계획을 세웠다.

크롬은 플래그를 사용해 메이저 버전을 99로 고정하고, UA 문자열의 마이너 버전 부분에 실제 메이저 버전 번호를 보고하게 하는 계획을 갖고 있다. 이 대체 코드는 이미 크롬의 업스트림 오픈소스 크롬 브라우저에서 사용가능하다.

이 경우 크롬 버전 UA 문자열은 '<major_version>.<minor_version>.<build_number>.<patch_number>' 패턴을 사용한다. 예를 들어 중요한 부분은 '99.101.4988.0'으로 보일 수 있다. 구글의 크롬 개발자들은 심각한 상황 발생 시 이 백업 옵션을 사용할 지 여부를 결정할 예정이다.

브라우저의 초기 릴리스 버전을 설정해 버전 번호를 100으로 보고하고, 발생한 문제를 보고하도록 할 수 있다. 파이어폭스 나이틀리는 설정 메뉴에서 'Firefox 100'을 검색하고, 'Firefox 100 User-Agent String' 옵션을 확인한다.

관련기사

크롬은 'chrome://flags/#force-major-version-to-100'으로 이동해 옵션을 'Enabled'로 설정하면 된다.

미국 지디넷은 "일반 사람들이 Y2K를 그리 큰 문제로 여기 않았던 이유는 사전에 올바르게 수정됐는지 확인하는데 모든 노력을 기울였기 때문"이라며 "구글과 모질라는 당신의 도움을 환영할 것"이라고 적었다.[☞모질라의 UA 버그 안내 블로그 바로가기]