최근 수정 시각 : 2023-04-29 01:58:59

NPAPI

1. 개요2. 역사3. 사용 현황4. 중단5. 우회 방법6. 관련 문서

1. 개요

NPAPI(Netscape Plugin Application Programming Interface)는 Netscape의 브라우저 확장 프로그램 API 이다. Internet Explorer ActiveX가 NPAPI의 영향을 받아 기능이 유사하다.

2. 역사

1995년 넷스케이프 내비게이터(Netscape Navigator) 2.0에서 처음 선보였다. 당시 웹 환경은 HTML5 같은 것은 전무했고, 웹 브라우저 기능 자체도 많이 부족했기 때문에 브라우저 외부의 응용프로그램을 플러그인 형식으로 끌어쓸 목적으로 제공된 API였다.

NPAPI가 들어가자, 웹 환경이 보다 더 멀티미디어스러워졌다. 웹 페이지에서 음악이나 동영상을 재생할 수 있었기 때문이다. 실제로 NPAPI가 나오면서 넷스케이프에는 이 기술을 사용한 nplayer라는 사운드 재생 소프트웨어가 번들되기도 했다. 웹 브라우저가 넷스케이프가 대세가 되자 쏟아져 나온 각종 플러그인 기술은 거의 모두 이 NPAPI를 지원했다. 대표적으로 이 시기에 나온 것이 Java 애플릿과 플래시, 리얼 플레이어등이 있다.

NPAPI가 흥하는 것을 본 마이크로소프트는 인터넷 익스플로러 3에 NPAPI 지원 기능을 탑재함과 동시에 Internet Explorer를 위한 전용 플러그인 규격도 탑재하는데, 이것이 그 악명높은 ActiveX이다. ActiveX와 같이 NPAPI를 지원한 이유는, 이 당시 Internet Explorer는 윈도우 전용이 아니었기 때문이다. 유닉스와 매킨토시 버전도 개발되었기 때문에 윈도우 환경에만 돌아가는 ActiveX만 전용으로 밀 수 없었다.

넷스케이프가 버전 4에서 삽질을 하기 시작하고, 그 틈을 타 Internet Explorer가 치고 올라오면서 한때 웹 환경은 Internet Explorer가 평정하다시피 했다. 그리고 마이크로소프트는 Internet Explorer 6을 윈도우 전용으로 내놓으면서, 바로 NPAPI 지원을 버렸다. 이 때문에 Internet Explorer가 천하통일을 하다시피 했던 2000년대 초반에는 윈도우에서는 거의 사용되지 않았고, 윈도우에 비해 사용자 수가 극히 적은 매킨토시나 유닉스, 리눅스에서 나오는 웹 브라우저에서만 지원이 근근히 이어졌다.

그러다가 모질라 파이어폭스가 강력한 경쟁자로 나타나고, 뒤이어 구글 크롬도 나오면서 인기몰이를 하자, 윈도우 환경에서도 NPAPI가 다시 사용되기 시작했다. 마이크로소프트도 실버라이트를 밀면서 이들 웹 브라우저는 NPAPI를 이용해서 지원을 했다.

3. 사용 현황

한국의 각 단체들은 구글 크롬 모질라 파이어폭스의 점유율이 높아지자 Internet Explorer에서 쓰던 ActiveX를 크롬에서도 지원하기 위해 NPAPI로 Microsoft Silverlight 등의 플러그인을 사용할 수 있게 하였다. 그러나 1995년에 개발되기 시작한 것인 만큼 그 역사가 너무 오래되어 보안성 등에 문제가 생기자 Internet Explorer에서 ActiveX 지원을 종료하는 것처럼, 모질라 파이어폭스나 구글 크롬도 NPAPI에 대한 지원을 중단하게 되었다. 2015년 4월, 구글 크롬 버전 업데이트로 기본값이 NPAPI 플러그인 차단으로 바뀌어, 수동으로 일일이 사용 설정을 해야 NPAPI를 사용할 수 있게 되었으며 #, 그마저도 9월에 출시한 크롬 안정화 버전 45에서 지원이 중단되었다.[1]

하지만 우리나라에서는 많은 부분에서 한동안 ActiveX나 NPAPI에 의존적이었기 때문에 크롬 유저들이 불편을 겪었다.[2]

물론 Chrome에서는 NPAPI 가 아닌 보안성이 훨씬 강화된 PPAPI(Pepper Plugin API)라는 플러그인 API를 이미 별도로 제공하고 있다. 이는 구글이 자랑(?)하는 Native Client(NaCl) 염화나트륨[3] 이라는 샌드박스 내에서 실행하는 플러그인이다. 이는 구글 크롬 자체적으로 구현하고 있는 샌드박스와는 전혀 다른 것으로, 이름 그대로 유저가 개발하는 Native Application(C/C++ 로 개발) 에 대해서 유저가 별도로 샌드박스 Broker와의 IPC를 생각하여 코딩하지 않아도 알아서 내부적으로 처리해 주는 플랫폼이다. 물론 샌드박스 내에서 실행한다는 것은 곧 로컬 파일 접근 등에서 자유롭지 못하다는 것을 뜻하고 이는 보안성이 더 강화된다는 것을 의미한다. 다만 유니티 엔진은 PPAPI를 지원하도록 업데이트하지 않았는데, 유니티 사 측 공식 답변[4]에 따르면 PPAPI는 구글이 어도비 플래시를 그냥 죽일 수 없어서 만든 플래시 전용 API에 가까운 녀석이라 범용성이 떨어진다고 한다. 기존 게임을 NPAPI에서 PPAPI로 단순하게 이식하지 못하며, 유니티 웹 엔진 자체는 WebGL로 진화할 것이지만, 기존에 이미 NPAPI 기반으로 만들어진 게임은 어쩔 수 없다고 한다. 그래서 유니티 엔진으로 만든 웹 게임을 크롬으로 접속하면 그냥 파이어폭스 쓰라고 나온다. 예시 [5] 배틀로그도 한동안 관련 문제로 몸살을 앓다가 크롬 45버전 정식 배포 이후 웹 헬퍼 실행 파일로 해결했다. 그나마 한국식 리소스 처먹으며 상주하는 건 아니고, 그냥 게임 실행 명령만 실행 파일로 이어준다. 그동안 익숙해졌던 실행 방식을 유지하기 위해서인 듯. 넥슨 게임도 이와 동일한 방식으로 크롬은 물론 파이어폭스에서도 정상적으로 게임 구동이 가능하다.

4. 중단

크롬 45 버전 이후 더이상 NPAPI가 동작하지 않는다. 예정대로 2015년 9월이 되자 크롬 45가 릴리스되었고 크롬을 사용하던 사람들은 당연하게도 금융권과 게임 등 문제가 발생하고 있다. 금융위원회에서는 2015년 안으로 가능하도록 하겠다고는 했다. # 대체로 exe를 설치하고 실행하는 방식을 사용할 것으로 보이며, 그나마 KB국민은행은 브라우저에 인증서를 저장하는 방식으로 인증서는 사용하지만 ActiveX나 NPAPI 설치가 필요없는 방식을 사용했다고 한다. 마이크로소프트 엣지에서도 된다는 듯. NPAPI의 지원 중단과 그 여파는 표준을 지키지 않는 한국 IT 업계의 현실을 보여주는 역할을 하였다.

크롬과 같은 크로뮴 엔진을 쓰는 오페라도 크롬 45 출시 이후에도 NPAPI를 사용할 수 있었으나, 2016년 7월 버전 37 이후로 지원을 중단했다.

파이어폭스도 2017년 3월 버전 52에서 어도비 플래시를 제외하고 NPAPI 지원을 모두 중단했다.[6] 마지막으로 NPAPI를 지원하던 사파리 역시 2018년 버전 12부터 NPAPI 기능을 제거해 현재 대표적인 웹 브라우저들 모두 사용할 수 없다.

2021년 1월 12일, 어도비 플래시가 지원 종료되면서 Firefox 및 Safari 브라우저에서 NPAPI가 완전히 종료되었다.

5. 우회 방법

5.1. Chrome 변종

한 유저가 크롬과 동일한 소스를 기반으로 하는 Chromium을 변형해 NPAPI의 사용이 계속 가능하도록 하는 버전을 배포했다고 한다. Chromium은 자동 업데이트로 차기 버전으로 납치되지 않기 때문에 한동안은 버틸 수 있을 것 같다.

https://github.com/korusdipl/chromium-internal/releases 에서 다운로드 받을 수 있다. 하지만 꼭 필요한 게 아니라면 되도록 NPAPI가 없는 공식 크롬을 쓰자.[7] 무엇보다도 향후 보안에 아무런 도움이 안 되는 만큼, 이를 대체용으로 사용하는 것은 권장되지 않는다.

다른 방법으로는 Midori 또는 Otter Browser가 있지만 둘 다 블링크가 이닌 WebKit 엔진을 사용한다.

5.2. 파이어폭스 변종

파이어폭스의 변종 중 하나인 Pale Moon은 NPAPI를 계속 지원하겠다는 입장을 밝혔다. #1 #2

Waterfox Classic도 NPAPI를 지원하는 파이어폭스 변종 중 하나이다. 단, 64비트 OS에서만 사용 가능하다.

6. 관련 문서

크롬 관련 번역
크롬 지원중단 원문
파이어폭스 작동제한 원문
파이어폭스 지원 중단 원문

[1] 만약 아직도 버전 45 이하를 사용하고 있다면 44라던가 43이라던가 42라던가 chrome://flags에서 설정할 수 있다. [2] 실제로 우리은행에 문의해본 결과 중단이 되면 당분간 크롬이 아닌 다른 웹 브라우저를 사용해 달라고 했다. [3] 일종의 말장난이다. API 이름이 후추이니 샌드박스 이름을 소금이라고 지은 것. [4] 글 자체는 WebGL 지원 발표이지만, PPAPI로 검색하면 Jonas Echterhoff의 답변을 찾을 수 있다. [5] 상단 안내창엔 "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 버릴 예정인 건 똑같은데 그 이후로는 어쩌려고 저러는지 모르겠다 싶었는데... 결국 사파리, Internet Explorer 11 쓰라는 안내로 바뀌었다. 원래 예시로 링크한 Contract Wars의 경우 결국 웹 게임 형태를 포기하고 다운로드형 클라이언트로 갈아탔다. [6] 단, ESR 버전은 2018년 말까지 지원했다. # [7] 애초에 저 프로젝트의 개발자도 "한국의 개탄스러운 상황에 따라 별도로 빌드한 것입니다. 되도록 NPAPI가 붙지 않은 Clean 버전을 사용하세요." 라고 말하고 있다.