From 88d158f2c1a02afc882c6074d68fd4f44a29402c Mon Sep 17 00:00:00 2001 From: TAKAHASHI Kyohei Date: Sun, 15 May 2016 02:02:51 +0900 Subject: [PATCH] Translate tutorial/security.md to Japanese. --- docs-translations/jp/README.md | 1 + docs-translations/jp/faq/electron-faq.md | 8 ++-- docs-translations/jp/tutorial/security.md | 45 +++++++++++++++++++++++ 3 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 docs-translations/jp/tutorial/security.md diff --git a/docs-translations/jp/README.md b/docs-translations/jp/README.md index a71661a7e535..63abb646efc7 100644 --- a/docs-translations/jp/README.md +++ b/docs-translations/jp/README.md @@ -13,6 +13,7 @@ _リンクになっていないリストは未翻訳のものです。_ ## ガイド * [サポートするプラットフォーム](tutorial/supported-platforms.md) +* [セキュリティ](tutorial/security.md) * [アプリケーションの配布](tutorial/application-distribution.md) * [Mac App Store 提出ガイド](tutorial/mac-app-store-submission-guide.md) * [アプリケーションのパッケージ化](tutorial/application-packaging.md) diff --git a/docs-translations/jp/faq/electron-faq.md b/docs-translations/jp/faq/electron-faq.md index eef30c013a3f..3991b71953cd 100644 --- a/docs-translations/jp/faq/electron-faq.md +++ b/docs-translations/jp/faq/electron-faq.md @@ -2,10 +2,12 @@ ## Electronは、いつ最新のChromeにアップグレードされますか? -ElectronのChromeバージョンは、通常、新しいChromeのstabeleバージョンがリリースされた後、1~2週間以内に上げられます。 +ElectronのChromeバージョンは、通常、新しいChromeのstabeleバージョンがリリースされた後、1~2週間以内に上げられます。ただし、この期間というのは保障されてはおらず、またバージョンアップでの作業量に左右されます。 また、Chromeのstableチャンネルのみを使用し、もし、重要な修正がbetaまたはdevチャンネルにある場合、それをバックポートします。 +もっと知りたければ、[セキュリティについて](../tutorial/security.md)をご参照ください。 + ## Electronは、いつ最新のNode.jsにアップグレードされますか? Node.js の新しいバージョンがリリースされたとき、私たちは Electron の Node.js を更新するのを通常約1か月待ちます。そのようにして、とても頻繁に発生している、新しい Node.js バージョンによって取り込まれたバグによる影響を避けることができます。 @@ -69,7 +71,7 @@ Electronに組み込まれているNode.jsの影響で, `module`, `exports`, `re ```javascript // In the main process. -var mainWindow = new BrowserWindow({ +var win = new BrowserWindow({ webPreferences: { nodeIntegration: false } @@ -113,7 +115,7 @@ console.log(require.resolve('electron')); "/path/to/Electron.app/Contents/Resources/atom.asar/renderer/api/lib/exports/electron.js" ``` -If it is something like もし、`node_modules/electron/index.js` のような形式の場合は、npm `electron` モジュールを削除するか、それをリネームします。 +もし、`node_modules/electron/index.js` のような形式の場合は、npm `electron` モジュールを削除するか、それをリネームします。 ```bash npm uninstall electron diff --git a/docs-translations/jp/tutorial/security.md b/docs-translations/jp/tutorial/security.md new file mode 100644 index 000000000000..f1ab7a9278d1 --- /dev/null +++ b/docs-translations/jp/tutorial/security.md @@ -0,0 +1,45 @@ +# セキュリティ・ネイティブ実行で出来ること・あなたの責任 + +Web開発者として、通常私たちはブラウザの強力なセキュリティ機能の恩恵を受けていますーそのため、書いたコードによる危険性は比較的小さいものです。 +ウェブサイトはサンドボックス内で限定された能力のみを使用することが許されていて、また、新しく見つかったセキュリティ脆弱性に素早く対処してくれるたくさんのプログラマチームによって作られたブラウザをユーザーが使ってくれています。 + +Electronを使用するにあたって、「Electronはウェブブラウザではない」ということを理解するのが大切です。使い慣れたWebテクノロジで豊富な機能を持ったデスクトップアプリケーションを作ることができますが、書いたコードはより強力な力を行使することのできるものです。JavaScriptでファイルシステム・シェルなどにアクセスすることができます。これによって、高機能なネイティブアプリケーションを作ることができますが、コードが許された力に比例して、受けるセキュリティリスクも大きいものになります。 + +そのことを頭に入れて、信頼できないソースから得られた任意の内容を表示することは、Electronが意図しない重要なセキュリティリスクを生み出すことに注意してください。 +実際、多くのElectronアプリケーション(Atom, Slack, Visual Studio Code など)は主としてローカルにあるファイルの内容(やNode integration外の信頼できる内容)を表示します。もしアプリケーション上でオンライン上から得られるコードを実行する場合、内容が悪意のあるものでないことを確認するのはあなたの責任です。 + + +# Chromium のセキュリティ問題とアップグレード + +Electronは新しいバージョンのChromiumを出来るだけ早くサポートするように努力をしてはいますが、アップグレードは数十、時には数百のファイルの編集を含む大変な左表であることを後理解ください。たくさんのリソースと貢献を受けていますが、ElectronはChromium最新版に追いついてないこともあり、数日・数週間遅れることがあります。 + +現在のChromiumコンポーネントのアップデートシステムは、使用できるリソースとほとんどのアプリケーションの需要を満たす、適切なバランスの場所にあると思います。我々は、Electronを使用する個々のケースに関する意見をいただきたいと思っています。この件に関するPull requestと貢献をいつでも歓迎します。 + + +## 上記の忠告を無視した場合 +リモートで得られたコードをローカルで実行した場合、セキュリティ問題が発生することになります。 +例えば、ブラウザでリモートのウェブサイトを表示することを考えてみてください。 +もし攻撃者がどうにかして(情報源そのものの攻撃や中間者攻撃によって)得られる内容を変更した場合、ユーザーのPC上でネイティブコードを実行できることになります。 + +> :warning: Node integration有効な環境で、リモートコードの読み込みと実行を行うべきではありません。代わりに、Nodeコードの実行にはローカルのファイルを使用してください。 +リモートのデータの内容を表示するには`webview`を使用して、`nodeIntegration`を無効にしてください。 + +#### チェックリスト +このリストは、防弾チョッキのように攻撃を防げるものではないですが、最低限あなたがしなければいけないことを記載しています。 + +* セキュア(https)な内容のみを表示してください。 +* リモートの内容を表示する全てのレンダラでNode integrationを無効にしてください (`webPreferences`を使用) +* `webSecurity`を無効にしないください。無効にすると、same-origin policyが無効になります。 +* +* [`Content-Security-Policy`](http://www.html5rocks.com/en/tutorials/security/content-security-policy/)を定義して、スクリプトの読み込み元を制限してください。(例: `script-src 'self'`) +* [`eval`を無効にしてください。](https://github.com/nylas/N1/blob/0abc5d5defcdb057120d726b271933425b75b415/static/index.js#L6) evalは文字列をコードとして実行してしまいます。 +* `allowDisplayingInsecureContent` を有効にしないでください。 +* `allowRunningInsecureContent` を有効にしないでください。 +* しっかり理解していない限りは`experimentalFeatures`や`experimentalCanvasFeatures`を有効にしないでください。 +* しっかり理解していない限りは`blinkFeatures`を有効にしないでください。 +* WebView: `nodeintegration`を無効にしてください。 +* WebView: `disablewebsecurity`を使用しないでください。 +* WebView: `allowpopups`を使用しないでください。 +* WebView: `insertCSS`や`executeJavaScript`を外部のCSS/JSに使用しないでください。 + +再確認ですが、このリストは単にリスクを小さくするもので、リスクをなくすものではありません。もしウェブサイトを表示することが目的なら、ブラウザを使うのがより安全な選択肢です。