Piping UIの開発でプライバシー/セキュリティを考え開発いることまとめ
Piping UIの開発では、一言で言えば技術的に可能な限り外部のサーバーにユーザーのデータが送られないように/残らないように開発している。
セキュリティ/プライバシーと利便性の両立を目指している。
Piping ServerのURLの情報を収集したりはしない。
ローカルのLocal Storage内に保存してすでに使ったものを使いやすくしているが、その設定をOFFにできるし、外部に送信されたりしない。
自動補完の転送パスの情報の情報もローカルで留める。
CookieなどでWebサーバーに送ったりはせず、Local Storageを使っている。
現在Cloudflareで運用しているためCookie_cfduidがつく。
詳細: _cfduidクッキーのプライバシーへの配慮
自動補完の設定はOFFしてそもそも保存しないように設定できる。
Google AnalyticsなどのWebサイトの計測はしない。
第三者のサーバーに情報が渡るため避けている。
JSやCSSなどは外部のCDNは使わず、最低限アクセスがあるホスト先(Netlify)へのアクセスだけで完結させる。
WorkboxはデフォルトでGoogleのサーバーのスクリプトをロードするようにしているが、そういうものもホスト先だけで完結している。
技術的な方法: 「WorkboxをCDNの経由ではなくローカルからimportScriptsするための設定」
Netlifyはそこそこ速く、HTTP/2に対応しているため並列でリソースがダウンロードされるし、再訪問時はService WorkerのキャッシュでNetlifyへのアクセスも最低限になるため速度の心配はないと思う。
クエリパラメータが必要な場面が出た場合、可能な限りURL フラグメントを利用する。
まだURLにパラメータを付与したくなっていないが、そういう必要性が出た場合はURLフラグメントを利用したい。
クエリパラメータと違いURL フラグメントならWebサーバーのリクエストに送られないから。
Service WorkerはURLフラグメントを受け取れるため積極的に利用している。
ユーザーのアクションがない限りPiping Serverと通信することはしない。
例えば勝手に/versionをGETしてPiping Serverのバージョンを確認したりはしない。
インターネットの仕組み上通信すると必ずサーバーにIPアドレスが渡るので、ユーザーのアクションなしに通信することは避けている。