💡 Electron 앱의 보안 문제에 대해 개인적인 이해도를 높이고자 혼자 공부하며 관리하고 있는 문서입니다.
✅ 읽어본 결과, 대부분 디폴트로 보안 문제에 대해 틀어막고 있고, 주의할 만하거나 참고할 만한 부분들은 제목에 ⭐️을 달아뒀습니다.
브라우저의 강력한 보안성에 익숙한 우리는, Electron 앱을 만들 때에도 비슷한 보안성을 기대한다. 하지만, Electron은 웹 브라우저가 아니기 때문에, 브라우저 위보다 훨씬 강력한 힘을 가진다. 자바스크립트는 당신의 파일 시스템 및 쉘에 접근할 수 있다. 따라서, 신뢰할 수 없는 소스에서 온 임의의 컨텐츠를 보여주는 것에 각별히 주의하라. 대다수의 Electron 앱들(Atom, Slack, VSCode 등)은 일반적으로 로컬 컨텐츠들을 보여준다.
신뢰할 수 없는 소스로부터 코드를 다운받고 이를 실행할 때, 보안 이슈가 발생한다. 웹사이트를 보여주고 싶으 ㄹ땐, BrowserWindow
모듈을 사용해라.
Node.js 코드를 실행할 땐, 앱에 같이 패키징된 로컬 파일들만을 사용해라. nodeIntegration
을 중지하고, contextIsolation
을 사용해라. (Default로 설정되어 있음.)
💡 Electronegativity라는 오픈 소스 툴로, misconfigurations와 insecure 패턴들을 자동화할 수 있다.
앱에 포함되어 있지 않은 어떠한 리소스든, HTTPS와 같은 보안 프로토콜을 이용해 로드되어야 한다. HTTP 쓰지 마셈! HTTPS는 데이터 무결성을 보장하고, 트래픽을 암호화한다.
💡 5.0.0 이후로 Default
렌더러 프로세스에서 원격 컨텐츠를 로딩할 때, Node.js integration 세팅을 비활성화해야 한다.
Cross-site-scripting(XSS) 공격은, 공격자가 렌더러 프로세스를 건너뛰고 사용자의 컴퓨터에서 직접 코드를 실행할 때 훨씬 위험하다.