HTML5で鯖環計画つぶやき

いずれうず高く積み上げられるであろうちょい古なAndroidの山をなんとか使いたい。そんなアプリ計画。
0
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

スマフォはどんどん新しいのが出るが、基本旬がすぎればゴミに成るのがやるせない。PCは10年立ってもLinuxを入れれば速度以外の面で鮮やかに蘇るのとは対照的。そこで颯爽とHTML5に対応したFirefoxが!

2013-05-18 14:38:43
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

うーんサーバーとかとして使う分にはモニタの解像度はいらないし、場所を取らないスマフォはいい。もんだいはそこで何も動かないという現実だな。

2013-05-19 17:42:01
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

ファンクションを文字列として送って、evalするのがいいのか?そうすると任意のプログラムが接続先のブラウザで作動するようになる。

2013-05-19 17:45:08
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

まあ、ブラウザに任意の処理を接続先の命令に従ってやってもらおうとすると、勢い、ウェブソケットの出番になるのだが、そうすると中央サーバーが必要で、XSSを意図的に起こすことになる。まあいいんだけど。

2013-05-19 17:58:59
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

この場合、何が問題なのだろうか。サーバーになるつもりでアクセスしたら、XSSでノードにされたでござるというのが問題なのか。実質XSSを受け入れた瞬間なんでもできるのが問題。ここの権限、外部へのデータ送信、ストレージへのアクセスに制御がかかれば問題ない。

2013-05-19 18:04:03
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

クロスドメインでAjaxできちゃう仕様なので、外部通信はやだし、じゃあどうするの?なのであります。functionのスクリーニング自体はJSON.parseでできるので問題にはならない。じゃあfunction込のデータは暗号化できればいいのか?と言うこところ。

2013-05-19 18:07:08
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

ただ、jsで実装すると一回でも任意のスクリプトの実行を許すと認証系の部分を上書きされるのが難点。ECMAScriptV5のプロパティ変更不可設定でも再設定されたら駄目な気がする

2013-05-19 18:09:46
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

やはり、js本体に書き換えなど出来ぬのだよは欲しいなぁ。IE以外が使えるConstは本当に定数として機能するのだろうか。js側で新しいサンドボックスを作れるみたいなのが理想。javaでいうカプセル化してるみたな。フリーダムすぎるんだよjsちゃんは・・・

2013-05-19 18:14:40
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

jsのお仕事頼みますを確実にやってXSS乗っ取りを防ぐシステムとなるとあれか・・・ソースを暗号化して保管系か。でもオンメモリにある奴は読みたい放題だし、暗号が有効なのか認証は出来るのか。

2013-05-19 19:31:03
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

XSSをしたい人はまず、中央サーバにこれXSSするんで宜しくと、スクリプトを入れると。でjsの仕事うけまっせといった鯖が中央サーバとウェブソケットコネクションを確立します、んでXSSなソースコードを受取り実行します。うむ、普通にアプリユーザはデータだけ渡せばいいような気がしてきた

2013-05-19 19:33:20
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

鯖はブラウザなので自分自身ではサービス提供を行えない。なので中央サーバに仲介を頼む。ユーザは仕事を発注したい。が、自分自身もブラウザなのでサービスを行えない。この時、中央サーバが仕事用JSを保持していればXSSは発生しない。

2013-05-19 19:35:44
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

だが、任意のアプリをユーザからコピペして使うソリューションを考えるとどうだろうか。このパターンは中央サーバとアプリの頒布が別口で行われている場合に発生しうる。例えば、Webアプリストアで買ったけど大規模に処理したい系の場合。この時鯖の助力はどうだろうか。

2013-05-19 19:40:24
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

Webアプリ自身にはコピペをする能力がなくても中央サーバが口を開けていればそこから侵入されるわけで、うーむ。jsはオープンソースなのでどこが接触ポイントなのか見りゃわかるしなぁ、非現実的か。鯖自分で用意できるならパスワードかけたあとに自分で登録しろよという話か。

2013-05-19 19:44:05
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

正直、鯖の権限も弄りたくない。という事はどういうことか。鯖は実行権限のみで動く。しかしそうするとストレージがどうしても制約が出る。じゃあそこはブラウザでやってしまえばいいんじゃないかと。もう一人別に用意してね。

2013-05-19 19:45:46
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

まあ、ブラウザ2台あればセッション情報で切り分けても意味がないか。でもローカルストレージは見えるからそこに置いておけば同一人物かは一発でわかると。まあ2つ以上のマシンに分散せよというところか。

2013-05-19 19:48:43
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

処理フローとしては ①中央サーバを用意:ここには書き込み権限はない ②ユーザブラウザ:中央サーバに接続 ③鯖ノードブラウザ:中央サーバに接続 ④ユーザは接続中の鯖ノードにロールを設定 ⑤信頼関係構築:PINコード仕込む? ⑥ユーザB:アプリアップロード ⑦鯖ノード:アプリロード

2013-05-19 20:05:16
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

んで、中央サーバ経由で処理がアプリに指示を出すと。オンデマンドでアプリ本体を渡す必要はないのか・・・

2013-05-19 20:07:31
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

メリットは 中央鯖はディスク容量を考慮しなくて良い。そのまま繋げば使える。前回の信頼関係はそのまま適用される。 まあJavaでも結局できるが、ブラウザで完結するというのが重要。今時ブラウザが載っていないマシンは珍しいし、ブラウザならAndroidをノードに使える。

2013-05-19 20:11:33
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

ということは・・・ 鯖の認証周りと画面作ればおしまいなのか・・・ あとはリクエストとレスポンスのトネリングだけ実装したらえんやな・・・

2013-05-19 20:21:51
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

例えば1中央鯖が複数のアプリをホスティングすることもありうる。問題はそこホスティングは最低1ペアの認証関係がウェブソケットネットワーク上にないと駄目といったところか。中央鯖とブラウザが2プロファイル/種類/台必要になる。

2013-05-19 20:27:14
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

もし、この信頼関係にあるブラウザの鯖ノードがマルウェアに陥落した場合、どうしたらいいのだろうか。起動中にCookieの変更は行われないものとして、ネットワークに接続するたびにペアキーの再発行をセッションIDとして行うのか?必要なのはユーザブラウザから見て正しいやつかどうかなので

2013-05-19 20:31:34
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

だとすると、鯖ノードはユーザブラウザから中央サーバに入れたアプリを接続毎に落とすのか? 多分、セッションIDとアプリのハッシュをチャレンジレスポンスで見るしかないような気がする。となると鯖ノードはアプリが常にオンメモリで存在することになると。Zip圧縮とか効くのかな?

2013-05-19 20:37:12
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

鯖ノードにダウンロードされる中央鯖のノードシステムにキャッシュが効かないというのが前提に成るな。意図的にキャッシュをする時点でそのブラウザが侵食されてるセキュリティーホール持ちなので使用をやめてくださいになると。

2013-05-19 20:43:41
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

なので、仮に鯖ノードのアプリがユーザ側と食い違っていた場合、 ①中央鯖のアプリとユーザのアプリが一致すると中央鯖から鯖ノードにアプリをダウンロードする ②中央鯖のメモリ上にアプリがない場合は改めてユーザブラウザからアプリをアップロードしてもらう。 ③中央鯖が再起動は②を行い①へ

2013-05-19 20:51:05
汝、翼を与える@ばってん先に翼ばくれんね イベント・・(出た、出たが最初から居るとまでは・・・) @ryunosinfx

最終的にデータの送信なんかはWebRTCでやりたいけど、まあそこまではないよねというのが現状。

2013-05-19 21:00:23