Electron製アプリのセキュリティ

electronでのデスクトップアプリ開発の学習を久しぶりに続行しようかと思い立って、改めて推奨されるセキュリティを調べてみる。

リモートコンテンツを読み込む場合は「nodeIntegration: false」ってのは以前からあったけど「contextIsolation: true」は初耳。nodeIntegrationをオフる事でプリロードスクリプトにメインプロセスとレンダラープロセスを仲介させることになりますが、プリロードスクリプトはNode.jsにアクセスできるレンダラープロセスであるためこれも安全ではないんだとか。なのでcontextIsolationでプリロードスクリプトとレンダラーも分離してしまい、代わってAPIはcontextBridgeなるモジュールを通してプリロードからレンダラーへ公開するんだと。

なんかよう分からんようになってきました。穴ふさいだり、ちょっと開けたり大変です。contextBridge経由で使いたい分だけ解放してねって事でしょう、「全部拒否、必要なものだけ許可」、セキュリティのキホンですね。

contextBridge.exposeInMainWorld()でAPI Keyを文字列で登録してその下に関数を公開するんですが、コード補完が効かなくなるよね。JavaScriptでやってるのに、型定義ファイル(*.d.ts)を作らなきゃいけなくなってまあメンドクサイ。

続きを読む “Electron製アプリのセキュリティ”

WebStorm+pageant

新しいPCでまごつくの巻き。

WebStormでGitLabの自分のプライベートレポジトリからSSHでクローンしようと思ったら落ちてこない。

止まったまま

gitとputtyのインストールも終わっていて、環境変数GIT_SSHにplink.exeのパスも登録済み、pageantへ秘密鍵も登録済み。原因が判明するまで昨晩は2時間も格闘してしまいました。

原因はgitlab.comをknown_hostとして受け入れていなかった事です。

ターミナルからsshホストへ初めてアクセスする際、公開鍵のフィンガープリントが表示されて、既知のホストとして受け入れるかどうかを尋ねられますが、WebStormではそれが表示されずに待ちぼうけを食ってる状態なんですね。

続きを読む “WebStorm+pageant”

Celeste Classic 2

Celesteの続編がリリースされたかと思いきや「Classic」、Pico-8版の続編です。ブラウザでも遊べます、Celeste Classic 2[itch.io]、キーボードしかないのでフックショットを取るあたり、つまり始まってすぐギブアップです。

Pico-8があれば「SPLORE」からカートリッジをダウンロードできます、ソースコードを見られるわけですが、レベルデータがマップエディタに収まらないのか「PX9 Data Compression」ってプログラムで圧縮してデータをスプライトデータに書き込んであるようです。