[seoul.js] - Electron에서 자바스크립트소스 보호


일렉트론

웹기술로 데스크탑 앱을 개발할 수 있는 프레임 웤

메인은 노드라고 생각해도 됨.

렌더러는 크롬 브라우저라고 생각하자.

프로토파이

디자이너를 위한 인터렉션 프로토타이핑 도구 - 일렉트론 + 타입스크립트

소스보호를위해 enclosejs, pkg(다음버전부터 예정)사용

자동업데이트 서버를 직접 구축해서 사용 - 자이트에서 하젤이라고 자동업데이트서버만들 수 있는거 나옴

일렉트론에서 보안에 관한 개념

일렉트론은 보안에 취약한 편.

로그인 토큰 혹은 로그인 정보 로컬 저장 서버와의 접속 방식 기타 중요 로직

이럴 때 좀 보호해야되는데

기본적 처리

asar처리. 아사로 패키징하는걸 권장하지만. 그냥 풀림. 보안의 의미가 별로없음.

uglify 이것도 역시임

enclosejs

이고르의 개인프로젝트임. 이거 돌리면 바이너리파일이 떨어짐.

근데 돌연 서비스중단. 유료라서 돈내고 쓰고있었는데!!!

pkg쓰라고해서 자이트 가보니. 이고르가 이거 만들고있음.

pkg

노드를 패키징해서 노드가 설치되지 않은 곳에서도 사용할 수 있게함.

실행파일을 메인프로세스에서 하고 node-ipc로 통신함.

일렉트론 메인에서 spawn을 이용하여 프로세스 띄움. 초기값을 일렉트론에서 args로 전달. 환경변수도 추가 전달

일렉트론 메인을 node-ipc로 연결

.server를 꼼수로만듦

렌더러 프로세스 하나하나를 별개의 context로 관리

서버의 시작과 함께 ContextManager인스턴스를 만든다.

node-ipc서버 설정을 한다. 터널서버, 메인연결채널

타입스크립트 빌드

pkg하기

일렉트론 빌드

단점

코드가 많아짐. 코드관리가 어렵다 -> 타입스크립트 쓰세요

용량이 커진다. 원래 크니까 상관없음

엔진 성능 이슈 pkg 한 것이 성능이 좋지 않다. 최적화 좀하면 거의 비슷

ipc 성능 이슈. 물론 같은 컨텍스트보다는 느리지만, DOM이 더 성능에 예민하니까 돔을 최적화하자.

vm이라는 키워드를 좀 공부해보자.


2023년 새해에는 성장하고 함께하고 싶다면?

Pre A 단계 이상의 스타트업 C 레벨들이 모여서 커뮤니티를 만들었습니다. 같이 스터디하고 친해질 일잘러를 찾습니다.




© 2017. by isme2n

Powered by aiden