web-dev-qa-db-ja.com

完全にクライアント側のJS / HTML5アプリにはどのようなセキュリティ上の懸念がありますか?

私は、完全にクライアント側のJS/HTML5フレームワークである ndum のインタラクティブフィクションストーリーに取り組んでいます。私は コンテンツセキュリティポリシー について最近読んでいて(暗号ノンスが何であるかを調べた後)、そのようなことがクライアント側のコード全体にとって重要かどうか疑問に思い始めました。可能であれば、基本的なCSPをいくつか適用しますが、主にインラインコードexecの禁止ですが、これは、私が制御しないHTTPヘッダーでのみ指定できるようです(この場合、転送は発生しません)私のゲームでは、githubページがHTMLとJSをホストしているため、HTTPが使用されており、おそらくgithubによって制御されています)

この質問 は同様の懸念に対処しますが、そのOPのマシンでローカルに実行されるため、より単純なコンテキストです。私のコンテキストは次のようになります:

  • HTMLとJSがホストされている場所:私のgithubページアカウント。実際にはまだありませんが、Inform 6に実装され、JS Informインタープリター( Quixe )で実行される別のものは here であり、明らかなCSPが表示されませんHTTPヘッダー
  • 依存関係はどこから来るのですか:ローカルJSファイル、jqueryおよびundumライブラリのみ
  • 関連する操作:ページ内の生成されたリンクのクリック、ローカルJSからのHTMLの生成/レンダリング(任意のテキストユーザー入力なし)、ゲームの保存/ロードをサポートする場合はHTML5 window.localStorageオブジェクトへの書き込み/読み取り
  • プロトコル:HTTPS

このようなちょっとしたウェブアプリに関連するセキュリティ上の懸念は何ですか?機密データは含まれていません。私は主に、可能性のあるあらゆる種類の悪意のあるスクリプトインジェクションに関心があります。

3
CCJ

JSとHTMLがGitHubでホストされていると言うとき、私はコードがダウンロードのみのためにホストされており、アセットをフェッチするために実行している間、インタラクティブストーリーがGitHubに到達しないことを想定しています。この場合、GitHubへのこの外部接続は悪意のあるアクションに使用される可能性があります。誰かがGitHubでホストされているコードにアクセスできる場合、クライアントで必要なものを実行するようにコードを変更できます。これは必ずしも注入であるとは限りませんが、注目する価値があります。

ただし、実行中にアプリがGitHubからコードをフェッチしていないようです。このアプリが本当にマシン上のローカルリソースのみを使用している場合(他の場所からデータを取得したり、外部リンクを使用したりしない)、アプリは外部の攻撃者から安全である必要があります。ユーザーコンテンツの表示には常に注意が必要です。適切にサニタイズされていない場合、インジェクション攻撃の可能性が生じる可能性があるためです。ただし、この場合、クライアントが他のクライアントに接続したりサーバーにアップロードしたりする方法がないようです。したがって、現実的には、ユーザーがクライアントにコードを挿入できる場合、影響を受ける可能性があるのは自分自身だけです。

もう1つの注意事項:ユーザーが配信するストーリーを作成できるフレームワークを構築している場合(たとえば、私が作成したストーリーを他の人が再生できるようにする場合)、これも攻撃のベクトルです。これは、最終的にストーリーファイルが任意のユーザー(私のような)によって作成され、後でそれらをインポートするユーザー(Alice/Bob)のクライアントWebアプリによって解釈されるためです。

2
ExecutionByFork