18章セキュリティを学ぶ

これまでブラウザ上でJavaScriptを使用して実現できるさまざまな機能を紹介してきました。ネットワークアクセスやマルチメディアの利用のみならず、ハードウェアへのアクセスまでがJavaScriptを通じて実行できます。これは非常にすばらしいことですが、よく考えてみると、同時に非常に危険なことです。ブラウザ上でJavaScriptを動かすということは、作成者も動作の詳細も不明なプログラムをダウンロードして確認もなしに実行することを意味します。しかも動作環境であるブラウザにはSNSどころかネットバンキングのアカウント情報などの非常に重要な情報が大量に保存されているのです。しかし、それにもかかわらずJavaScriptが原因で何か致命的な問題が起きたという話は、ないとは言わないまでも、それほど頻繁には聞かれません。これはどうしてなのでしょう?

18.1 サンドボックス

JavaScriptが安全に利用できる最も大きな理由は、サンドボックスで動作するからです。サンドボックス(sandbox)は日本語で言うと砂場のことです。砂場の中では子供たちは自由にしかも安全に遊ぶことができ、砂場でどんなことをしたとしてもその枠の外側には影響を与えません。セキュリティ機構としてのサンドボックスも同様にプログラムの使用できるリソース、つまりアクセスできるファイルや実行できるプログラムを限定する代わりに、その制限の内側である限りは自由な利用を許可します。JavaScriptのサンドボックスによる代表的な制約には次のようなものがあります(ただし、これらの制限の中にはユーザーが明示的に許可を与えることで解除できるものもあります)。

  • 同一オリジンポリシー(same origin policy) ...

Get ハンズオンJavaScript now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.