ブラウザのサンドボックス
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
攻撃から防御するには、デベロッパーは脆弱性を緩和し、アプリケーションにセキュリティ機能を追加する必要があります。幸い Web ブラウザには多くのセキュリティ機能が
備わっていますいくつかの機能はデベロッパーがオプトインできるものもあれば、ユーザーを保護するためにデフォルトで有効になっているものもあります。
「サンドボックス」の概念
図: サンドボックスとしてのブラウザ
最新のウェブブラウザは「サンドボックス」という考え方に基づいて構築されています。サンドボックスは、制限された環境でアプリケーションを実行するために使用されるセキュリティ メカニズムです。遊び場にある物理的なサンドボックスと同じように、子供たちは別の場所で煩わされることなく、境界内で好きなものを何でも作成できます。それと同じように、アプリケーション コードには、制限された環境内で自由に実行できます。たとえば、JavaScript はページ上の要素の追加や変更が可能ですが、外部の JSON ファイルへのアクセスは制限される場合があります。これは、同一オリジンと呼ばれるサンドボックス機能によるものです。
サンドボックスが必要な理由
ウェブのユーザーは毎日、任意のコードをダウンロードして、パソコンやスマートフォンで何度も実行します。たとえば、「Download and run this application!」という内容のメッセージが表示された場合は、そのアプリケーションが信頼できるソースから提供されているか、アプリケーション ベンダーを調べて、レビューを注意深く確認してみてください。たとえば、「このブログ投稿を調べて」という URL を受け取ったら、おそらく、このサイトはどの種類の JavaScript をダウンロードしますか?
ブラウザ サンドボックスは、任意のコードをより安全に実行できるようにして、ウェブのブラウジングをスムーズにするための重要な機能です。
安全性を重視して設計する
ブラウザが各ウェブ アプリケーションをサンドボックス化している場合、セキュリティも考慮すべきでしょうか?答えはイエスです。
第一に、サンドボックス機能は完全な防御ではありません。ブラウザ エンジニアは懸命に努力していますが、ブラウザには脆弱性が存在する可能性があり、攻撃者は常にサンドボックスを回避しようとします(Spectre Attack など)。
サンドボックスは、優れたウェブ エクスペリエンスの実現を妨げる場合があります。たとえば、別のドメインでホストされている画像に対するフェッチ リクエストをブラウザがブロックする場合があります。クロスオリジン リソース シェアリング(CORS)を有効にすると、複数のドメインでリソースを共有できます。ただし、慎重に行わなければ、リソースがウェブ上の他のユーザーに公開され、サンドボックスが取り消される可能性があります。
まとめ
安全なウェブ エクスペリエンスは、アプリケーションの設計にセキュリティが組み込まれている場合にのみ達成できます。強固な設計は、既存の機能を理解することから始まります。次の 2 つのガイドでは、CORS と同一オリジン ポリシーについて深く掘り下げます。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンス により使用許諾されます。コードサンプルは Apache 2.0 ライセンス により使用許諾されます。詳しくは、Google Developers サイトのポリシー をご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2018-11-05 UTC。
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"必要な情報がない"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"複雑すぎる / 手順が多すぎる"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"最新ではない"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"翻訳に関する問題"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"サンプル / コードに問題がある"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"その他"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"わかりやすい"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"問題の解決に役立った"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"その他"
}]
{"lastModified": "\u6700\u7d42\u66f4\u65b0\u65e5 2018-11-05 UTC\u3002"}
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2018-11-05 UTC。"],[],[]]