PsperController/0.1.2をリリースしました。
更新内容
- 悪意のあるウェブサイトにアクセスした場合に、PSPERの設定ファイルの内容が読み取られてしまう問題を解消しました。
- PSP-1000に対応しました。(多分)
セキュリティ問題の内容
PSPのブラウザであるNetFrontは、HtmlやJavascriptの中に書かれているドメインをチェックしないため、インターネットドメインのウェブページにローカルドメインのURLが書かれていると、そのままアクセスしてしまいます。
アクセスできるファイルはNetfrontが解釈できる一部のファイルだけ(画像、Html、JS,CSS等)ですが、外部サーバーから自由にアクセスできるので、データが流出する可能性があります。
対策
こんな感じのスクリプトで、ローカルファイルを保護するようにしました。
保護された部分の情報は、外部サイトから読みだすことができません。
(function(){ var w=window; do{ if(w.location.protocol!="file:") { alert("!!Security Error!!"); //ローカル以外からのアクセスではここにくる //無限ループで停止させても良い。 return; } if(w===w.parent){ break; } w=w.parent; }while(w!=undefined); //ここに重要な値の初期化コードを書く。ローカルからしか実行できない。 }())
おまけ
PSPのマイブックマークの問題
PSPのマイブックマークのデータは残念ながらHTMLのなので、割と簡単に流出してしまいます。
ブックマークに識別情報を保存するタイプのアプリケーションは、特に危険です。十分注意してください。(PSPERはブックマークに情報を保存しないので、関係ありません。)
マイブックマークの流出対策
アクセスを遮断する方法は見つかってないのですが、次のスクリプトをPSPのマイブックマークの先頭行へ追記しておくと、ブックマークデータを抜かれそうになった時に、警告を出すことはできます。(警告が出た瞬間にWLANを切断すればブロックできるかもしれませんが、100%止めることはできません。)
<script type="text/javascript">(function(){var w=window;for(;;){if(w.location.protocol!="file:"){alert("SECURITY WARNING\nThis Web site was accessed to the bookmark file.");}if(w===w.parent){break;}w=w.parent;}}())</script>
もう少し賢いコードを書けば、流出自体をブロックすることができるかもしれませんが…。
ちなみに、このコードは、PSPでマイブックマークを編集すると消えてしまいます。