Calendar
SunMonTueWedThuFriSat
1234567
891011121314
15161718192021
22232425262728
293031    
<< October 2017 >>
Recommend
New Entries
Archives
Categories
Recent comment
Recent trackback
Profile
Links
Sponsored Links
Mobile
qrcode
Admin
無料ブログ作成サービス JUGEM
Seach this site
2009.12.11 Friday
スポンサーサイト

一定期間更新がないため広告を表示しています

| スポンサードリンク | - | | - | - | pookmark |
2009.09.03 Thursday
もしかしてブラウザの脆弱性?LEDの制御の誤動作を修正

ねぎうぉっちにはコメント欄(ブログのじゃなくてサイトの)に色を書き込むと、画面に映っているその色のLEDが光る、というしくみがあります。

幻想的な黄色

数日前から実装したしくみなのですが、これまで、指示してもちゃんとLEDが切り替わるときと、切り替わらない時がありました。

へんだなー。タイミングの問題かなー、くらいにしか思っていなかったのですが、どうもうまく動作しない時のほうが増えてきたような感じなので、ちょっと調べてみることにしました。

このLEDの切り替えシステムですが、xmlhttpオブジェクト、というしくみを利用しています。
これは、最近はやりのAJAX(エージャックス)という技術にかかせないしくみで、ブラウザで表示中のコンテンツをそのままで、サーバにアクセスして別の情報をGETして再表示したります。

ところが、これがセキュリティの関係上、呼び出す側のドキュメントと呼び出されるコンテンツが同じドメインに存在しないとうまく働かないようになっています。
しかしながら、ねぎうぉっちのサーバと、画面に映っているLEDを切り替えるサーバ(arduinoのやつ)は別のドメインにあるのです。

ですが、いったん同じドメインのコンテンツを呼び出すと、リダイレクト(自動的に転送)されて、切り替えサーバが呼び出されるので、テスト中はそれでちゃんと動いたりしていたのでした。

で、問題箇所をつきとめるために、スクリプトの途中でとめたり、ログを見たりして、どこが問題なのかを調べていると、どうも、リダイレクトされるとxmlhttpオブジェクトがうまく動作しなくなるようなのです。
あからさまに、ことなるドメインにアクセスさせると、「アクセスできません」というエラーがでるのですが、リダイレクトだとそのようなエラーはでません。ステータスコードの302を返しているはずなのですが、どうもそれもうまく拾わないようなのです。

まあ、エラーはでないまでも、アクセスできないってのは本来のクロスサイトスクリプティングの防止にかなっているので、それでもいいのですが、このLEDシステムは最初正常に動作していましたし、なんだかご機嫌うかがいしないといけないのですが、動かないわけでもない、という困ったちゃんなのです。
「ということは、これってブラウザの脆弱性なんじゃないだろうか」とか思ってしまったわけです。

つまり、本来別ドメインにはアクセスできないxmlhttpオブジェクトが、同一ドメインにアクセスした後、別ドメインにリダイレクトされていると、時々アクセスできてしまう、みたいな感じでしょうか?
このあたりはちょっと自分でも確証がないので、なんともなのですが。。。

で、LEDの切り替えシステムをちゃんど動作させるために、ここは背伸びをせずに、確実な方法として「インラインフレーム中に切り替えサーバを呼び出す」という方法をとることにしました。これなら問題なく動作するようです。

コメント欄に書き込む、ということでちょっと勇気がいるのかもしれませんが、みなさんも、ぜひ「赤」とか「黄色」とか「緑のたぬき」とか書き込んでみてください。


| ねぎうぉっち中の人 | - | 02:28 | comments(0) | trackbacks(0) | pookmark |
2009.12.11 Friday
スポンサーサイト
| スポンサードリンク | - | 02:28 | - | - | pookmark |
Comment









Trackback
URL : http://negiwatch.jugem.jp/trackback/39