From 12e62746b383ca4f51cea2c32611128d96f4f282 Mon Sep 17 00:00:00 2001 From: Plusb Preco Date: Tue, 10 May 2016 13:48:26 +0900 Subject: [PATCH] :memo: Add `security.md` [ci skip] --- docs-translations/ko-KR/tutorial/security.md | 70 ++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 docs-translations/ko-KR/tutorial/security.md diff --git a/docs-translations/ko-KR/tutorial/security.md b/docs-translations/ko-KR/tutorial/security.md new file mode 100644 index 0000000000..2466efe65a --- /dev/null +++ b/docs-translations/ko-KR/tutorial/security.md @@ -0,0 +1,70 @@ +# 보안, 네이티브 호환성, 그리고 신뢰성 + +웹 개발자로써, 우리는 일반적으로 브라우저의 강력한 웹 보안을 잘 이용해왔습니다 - 작성한 +코드에 관련된 보안 문제는 아주 적었습니다. 웹 사이트에 대해 상당히 제한된 권한과 기능에 +의존해왔습니다 - 그리고 사용자들이 새로운 보안 위협에 대해 발 빠르게 대응할 수 있는 +아주 커다란 팀의 엔지니어들에 의해 만들어진 브라우저를 마음 놓고 즐길 것이라고 +믿어왔습니다. + +하지만 Electron을 사용하여 작업한다면, Electron은 웹 브라우저가 아니라는 것을 이해하는 +것이 중요합니다. Electron은 웹 기술을 사용하여 강력한 데스크톱 어플리케이션을 만들 수 +있도록 해줍니다. 가장 핵심 기능은 바로 제한된 웹 사이트의 기능을 커버할 정도로 완전한 +네이티브 어플리케이션과 동일한 기능을 하는 강력한 소프트웨어를 만들 수 있는 능력입니다. +하지만 코드에 부여된 추가적인 기능만큼 고유한 보안 문제가 발생할 수 있습니다. + +이를 염두해두고, 신뢰할 수 없는 출처의 임의의 콘텐츠를 표시할 때 Electron에서 +자체적으로 처리하지 않는 심각한 보안 문제를 야기할 수 있다는 점을 주의해야 합니다. +실제로도, 가장 유명한 Electron 어플리케이션들은 (Atom, Slack, Visual Studio Code, +등) 주로 로컬 콘텐츠를 (또는 Node 통합이 제외된 신뢰된, 보안된 원격 콘텐츠) 사용합니다 +- 만약 어플리케이션이 온라인 출처에서 가져온 코드를 실행한다면, 그 코드가 악성 코드가 +아닌지 판별하는 것은 본인의 책임입니다. + +## Chromium 보안 문제와 업그레이드 + +Electron이 새로운 버전의 Chromium을 가능한 한 빠르게 지원하려고 노력하지만, +개발자는 이러한 업그레이딩 작업은 매우 힘든 작업이라는 것을 알아야 합니다 - 각 관련된 +수십에서 심지어 백자리 개수의 파일들을 손수 수정해야 합니다. 주어진 자원과 현재 +기여도를 생각한다면, Electron은 항상 최신 버전의 Chromium을 유지하지 못할 수 있으며, +며칠부터 몇 주까지 더 걸릴 수 있습니다. + +현재 Chromium 구성 요소를 업데이트하는 시스템은 우리가 사용할 수 있는 자원과 이 +프레임워크를 기반으로 구축된 대부분의 어플리케이션이 요구하는 것 사이에서 적절한 균형을 +유지하고 있다고 느끼고 있습니다. 우리는 확실히 Electron 위에 무언가를 만드는 사람들의 +사용 사례에 대한 자세한 내용을 듣는 것에 관심이 있습니다. 이러한 노력을 지원하는 Pull +request와 기여는 언제나 환영합니다. + +## 위 조언 무시하기 + +원격 위치에서 받아온 코드를 로컬에서 실행하는 경우 언제나 보안 문제가 존재합니다. +예를 들어, 원격 웹 사이트가 브라우저 윈도우에서 표시될 때를 생각해볼 때, 만약 공격자가 +어떠한 방법으로 웹 페이지의 콘텐츠를 변경하는 경우 (소스를 직접적으로 공격하거나 +어플리케이션과 실질적인 위치 사이에서 공격하는 등), 공갹자는 사용자의 기기에서 네이티브 +코드를 실행할 수 있습니다. + +> :warning: 어떠한 상황에서도 원격 코드를 로드하고 실행할 땐 Node 통합 기능을 +비활성화하고, 로컬 파일만 (어플리케이션 패키지 내부에 포함된) Node 코드를 실행시킬 수 +있도록 하는 것이 좋습니다. 원격 콘텐츠를 표시할 땐, 항상 `webview`를 사용하고 +`nodeIntegration`이 비활성화되어있는지 확인하세요. + +#### 체크 리스트 + +이 리스트는 완벽하지 않습니다, 하지만 최소한 다음 사항은 확인하는 것이 좋습니다: + +* 보안된 (https) 콘텐츠만 표시합니다. +* 원격 콘텐츠를 표시하는 모든 렌더러에서 Node 통합 기능을 비활성화합니다. + (`webPreferences` 사용) +* `webSecurity`를 비활성화하지 않습니다. 이 옵션을 비활성화하면 동일-출처 정책도 + 비활성화됩니다. +* `allowDisplayingInsecureContent`를 `true`로 설정하지 마세요. +* `allowRunningInsecureContent`를 `true`로 설정하지 마세요. +* 무엇을 하고 있는지 확실히 알고 있지않는 이상 `experimentalFeatures` 또는 + `experimentalCanvasFeatures`를 활성화하지 마세요. +* 무엇을 하고 있는지 확실히 알고 있지않는 이상 `blinkFeatures`를 활성화하지 마세요. +* WebViews: `nodeintegration`를 `false`로 설정하세요. +* WebViews: `disablewebsecurity`를 사용하지 마세요. +* WebViews: `allowpopups`를 사용하지 마세요. +* WebViews: 원격 CSS/JS와 `insertCSS` 또는 `executeJavaScript`를 함께 사용하지 + 마세요. + +다시 말하지만, 이 리스트는 그저 위험을 최소화할 뿐이며 완전히 제거하지 않습니다. 만약 +목적이 그저 웹 사이트를 보여주는 것이라면 일반 웹 브라우저가 더 안전한 방법입니다.