NPAPI
1. 개요
NPAPI는 Netscape Plugin Application Programming Interface라는 이름 그대로 Netscape 시절에 개발된 API 이다. 인터넷 익스플로러의 ActiveX가 NPAPI의 영향을 받아 기능이 유사하다.
2. 역사
1995년 넷스케이프 내비게이터(Netscape Navigator) 2.0에서 처음 선보였다. 당시 웹 환경은 HTML5 같은 것은 전무했고, 웹 브라우저 기능 자체도 많이 부족했기 때문에 브라우저 외부의 응용프로그램을 플러그인 형식으로 끌어쓸 목적으로 제공된 API였다.
NPAPI가 들어가자, 웹 환경이 보다 더 멀티미디어스러워졌다. 웹 페이지에서 음악이나 동영상을 재생할 수 있었기 때문이다. 실제로 NPAPI가 나오면서 넷스케이프에는 이 기술을 사용한 nplayer라는 사운드 재생 소프트웨어가 번들되기도 했다. 웹 브라우저가 넷스케이프가 대세가 되자 쏟아져 나온 각종 플러그인 기술은 거의 모두 이 NPAPI를 지원했다. 대표적으로 이 시기에 나온 것이 Java 애플릿과 플래시, 리얼 플레이어등이 있다.
NPAPI가 흥하는 것을 본 마이크로소프트는 인터넷 익스플로러 3에 NPAPI 지원 기능을 탑재함과 동시에 IE를 위한 전용 플러그인 규격도 탑재하는데, 이것이 그 악명높은 ActiveX이다. ActiveX와 같이 NPAPI를 지원한 이유는, 이 당시 IE는 윈도우 전용이 아니었기 때문이다. 유닉스와 매킨토시 버전도 개발되었기 때문에 윈도우 환경에만 돌아가는 ActiveX만 전용으로 밀 수 없었다.
넷스케이프가 버전 4에서 삽질을 하기 시작하고, 그 틈을 타 IE가 치고 올라오면서 한때 웹 환경은 IE가 평정하다시피했다. 그리고 IE의 타 OS 지원이 IE 5/IE 5.2.3에서 끊기고 IE6이 윈도우 전용으로 나오자, 마이크로소프트는 묻지도 따지지도 않고 NPAPI 지원을 버렸다. 이 때문에 IE가 천하통일을 하다시피 했던 2000년대 초반에는 윈도우에서는 거의 사용되지 않았고, 윈도우에 비해 사용자수가 극히 적은 매킨토시나 유닉스, 리눅스에서 나오는 브라우저에서만 지원이 근근히 이어졌다.
그러다가 모질라 파이어폭스가 강력한 경쟁자로 나타나고, 뒤이어 구글 크롬도 나오면서 인기몰이를 하자, 윈도우 환경에서도 NPAPI가 다시 사용되기 시작했다. 마이크로소프트도 실버라이트를 밀면서 이들 웹 브라우저는 NPAPI를 이용해서 지원을 했다.
3. 사용 현황
한국의 각 단체들은 구글 크롬 및 모질라 파이어폭스의 점유율이 높아지자 IE에서 쓰던 액티브X를 크롬에서도 지원하기 위해 NPAPI 의 형식으로 실버라이트 등의 플러그인을 사용할 수 있게 하였다. 그러나 1995년에 개발되기 시작한 것인 만큼 그 역사가 너무 오래되어[1] 보안성 등에 문제가 생기자 IE 에서 ActiveX 지원을 종료하는 것처럼, 모질라 파이어폭스나 구글 크롬도 NPAPI에 대한 지원을 중단하게 되었다. 2015년 4월, 구글 크롬 버전 업데이트로 수동 설정을 해야 NPAPI 를 사용할 수 있게 되었으며#, 그 마저도 9월에 출시될 크롬 안정화 버전 45에서 지원이 중단될 것이라는 기사가 나왔으며, 실제로 45버전 배포와 동시에 얄짤없이 중단되었다.[2][3]
하지만 우리나라에서는 많은부분에서 여전히 액티브엑스나 NPAPI에 의존적이다. 하지만 관련 대비책은 아직 미비한 상황이라 지원이 중단되면 크롬유저의 불편이 예상된다. [4]
물론 Chrome 에서는 NPAPI 가 아닌 보안성이 훨씬 강화된 PPAPI(Pepper Plugin API)라는 플러그인 API 를 이미 별도로 제공하고 있다. 이는 구글이 자랑(?)하는 Native Client(NaCl) [5] 이라는 샌드박스 내에서 실행하는 플러그인이다. 이는 구글 크롬 자체적으로 구현하고 있는 샌드박스와는 전혀 다른 것으로, 이름 그대로 유저가 개발하는 Native Application(C/C++ 로 개발) 에 대해서 유저가 별도로 샌드박스 Broker 와의 IPC 를 생각하여 코딩하지 않아도 알아서 내부적으로 처리해주는 플랫폼이다. 물론 샌드박스 내에서 실행한다는 것은 곧 로컬 파일 액세스 등에서 자유롭지 못하다는 것을 뜻하고 이는 보안성이 더 강화된다는 것을 의미한다. 다만 유니티 엔진은 PPAPI를 지원하도록 업데이트하지 않았는데, 유니티 사 측 공식 답변[6] 에 따르면 PPAPI는 구글이 어도비 플래시를 그냥 죽일 수 없어서 만든 플래시 전용 API에 가까운 녀석이라 범용성이 떨어진다고 한다. PPAPI 대응해봤자 기존 게임을 NPAPI → PPAPI 그냥 포팅한다고 실행되는 일이 거의 없으며, 유니티 웹 엔진 자체는 WebGL로 진화할 것이지만, 기존에 이미 NPAPI 기반으로 만들어진 게임은 어쩔 수 없다고 한다. 그래서 15년 10월 현재 유니티 엔진으로 만든 웹게임을 크롬으로 접속하면 그냥 파이어폭스 쓰라고 나온다. 예시 [7] 배틀로그도 한동안 관련 문제로 몸살을 앓다가 크롬 45버전 정식 배포 이후 일명 액티브'''EXE'''[8] 비슷한 웹 헬퍼로 해결. 그나마 한국식 리소스 처먹으며 상주하는 건 아니고, 그냥 게임 실행 명령만 실행 파일로 이어준다. 그동안 익숙해졌던 실행 방식을 유지하기 위해서인 듯. 넥슨 게임도 이와 동일한 방식으로 크롬은 물론 파이어폭스에서도 정상적으로 게임 구동이 가능하다.
오페라 브라우저는 크로미움 변형 브라우저인데, 크롬이랑 같은 버전의 크로미움으로 업데이트 되지만 npapi가 아직은 계속 사용가능하다. 단, 리눅스 버전은 지원하지 않는다. 머지않아 지원이 중단될 것으로 보인다. 플러그인을 사용하면 지원되지 않을 예정이라고 알림이 나온다.
4. 중단
크롬 45 버전 이후 더이상 NPAPI가 동작하지 않는다. 예정대로 9월이 되자 크롬 45가 업데이트 되었고 크롬을 사용하던 사람들은 당연하게도 금융권과 게임 등 문제가 발생하고 있다. 금융위원회에서는 '''2015년 안'''으로 가능하도록 하겠다고는 했다.# 대체로 exe를 설치하고 실행하는 방식을 사용할 것으로 보이며, 그나마 국민은행은 브라우저에 인증서를 저장하는 방식으로 인증서는 사용하지만 Active-X나 NPAPI 설치가 필요없는 방식을 사용했다고 한다. 마이크로소프트 엣지에서도 된다는 듯. NPAPI의 지원 중단과 그 여파는 표준을 지키지 않는 한국 IT 업계의 현실을 보여주는 역할을 하였다.
크롬을 시작으로 파이어폭스도 버전 52에서 NPAPI 지원을 Adobe Flash를 제외하고 모두 중단했다.[9] 사파리 브라우저는 NPAPI에 대한 아무런 응답이 없으나 진작에 윈도우 지원을 포기한 상태라 데스크톱에서는 큰 의미가 없다. 모바일은 애초에 지원을 안 하니 관련없는 이야기고...
결국 마지막으로 NPAPI를 지원하던 사파리 역시 iOS 12와 macOS 모하비부터 NPAPI 지원을 삭제해버려 현재 대표적인 인터넷 브라우저들에서는 모두 사용이 불가능해졌다.
이 추세대로 NPAPI도 얼마 못 가 곧 역사의 뒤안길로 사라져 갈 것이다.
5. 우회 방법
여러 가지 방법이 있지만, 가장 좋은(?) 방법은 그냥 Internet Explorer를 사용하는 것이다.
5.1. Chrome 변종
한 유저가 크롬과 동일한 소스를 기반으로 하는 Chromium을 변형해 NPAPI의 사용이 계속 가능하도록 하는 버전을 배포했다고 한다. Chromium은 자동 업데이트로 차기 버전으로 납치되지 않기 때문에 한동안은 버틸 수 있을 것 같다.
https://github.com/korusdipl/chromium-internal/releases 에서 다운로드 받을 수 있다. 하지만 꼭 필요한 게 아니라면 되도록 NPAPI가 없는 공식 크롬을 쓰자.[10] 무엇보다도 향후 보안에 아무런 도움이 안 되는 만큼, 이를 대체용으로 사용하는 것은 권장되지 않는다.
다른 방법으로는 Midori 또는 Otter Browser가 있지만 둘 다 블링크가 이닌 WebKit 엔진을 사용한다.
5.2. 파이어폭스 변종
파이어폭스의 변종 중 하나인 Pale Moon은 NPAPI를 계속 유지하겠다는 입장을 밝혔다. # 자매품인 Basilisk도 마찬가지.
Waterfox도 NPAPI를 지원하는 파이어폭스 변종 중 하나이다. Classic, Current, G3 모두 지원하므로 64비트 OS를 사용한다면 이것이 가장 최선의 해결책.
6. 관련 문서
크롬 관련 번역
크롬 지원중단 원문
파이어폭스 작동제한 원문
파이어폭스 지원 중단 원문
[1] ActiveX 보다도 오래된 기술이다.[2] 실제로 이렇게 미리 권고하는 것 자체가 예정대로 시행하기 위해 준비기간을 주는 것이다. [3] 만약 아직도 버전 45 이하를 사용하고 있다면 chrome://flags에서 설정이 가능하다.[4] 실제로 우리은행에 문의해본 결과 중단이 되면 당분간 타 브라우저를 사용해달라고 했다.[5] 일종의 말장난이다. API 이름이 후추이니 샌드박스 이름을 소금이라고 지은 것. [6] 글 자체는 WebGL 지원 발표이지만, PPAPI로 검색하면 Jonas Echterhoff의 답변을 찾을 수 있다.[7] 상단 안내창엔 "Recent updates to Chrome have made Unity games unplayable. For the optimal experience, please play using Firefox."가 나오고, 게임 창에는 "Changes to Google Chrome have made Unity games unplayable within this browser."가 나오며 공통적으로 파이어폭스 다운로드 페이지 안내가 있다. 근데 파이어폭스도 시기만 다를 뿐 NPAPI 버릴 예정인 건 똑같은데 그 이후로는 어쩌려고 저러는지 모르겠다 싶었는데...결국 사파리, IE11 쓰라는 안내로 바뀌었다. 원래 예시로 링크한 Contract Wars의 경우 결국 웹게임임을 포기하고 다운로드형 클라이언트로 갈아탔다.[8] 천송이 코트니 해서 액티브X 없앤다고 난리친 결과가 기껏 기존의 보안 프로그램들은 exe로 다운받아서 실행하는 것을 비꼬는 말.[9] 단, ESR 버전은 2018년 말까지 지원했다. 출처[10] 애초에 저 프로젝트의 개발자도 '''"한국의 개탄스러운 상황에 따라 별도로 빌드한 것입니다. 되도록 NPAPI가 붙지 않은 Clean 버전을 사용하세요."''' 라고 말하고 있다.