タイトル/名前 | 更新者 | 更新日 |
---|---|---|
技術/ASP.NET/ViewStateメモ | msakamoto-sf | 2011-08-28 23:50:34 |
日記/2011/08/28/冷蔵庫処分 | msakamoto-sf | 2011-08-28 23:31:07 |
日記/2011/08/21/AndroidSDKで使えるインターネットプロトコル | msakamoto-sf | 2011-08-21 20:44:49 |
技術/Android/TestAutomation | msakamoto-sf | 2011-08-21 16:29:54 |
技術/HTTP/セッション固定化関連メモ(SessionFixation,SessionAdoption) | msakamoto-sf | 2011-08-21 14:53:17 |
技術/HTTP/FormやCookieのkey名に"="を含めたらどうなるのか? | msakamoto-sf | 2011-08-21 14:52:59 |
技術/HTML5/WebSocket | msakamoto-sf | 2011-08-20 21:11:14 |
日記/2011/08/20/nPOPQのメールデータをmbox形式に変換 | msakamoto-sf | 2011-08-20 17:58:39 |
技術/HTML5/WebStorage | msakamoto-sf | 2011-08-20 17:50:30 |
日記/2011/08/14/Struts2とOGNL | msakamoto-sf | 2011-08-14 20:36:17 |
ViewStateの参考情報リンクメモ。
日本語:
英語:
個人的にはMSDN英語版の "Understanding ASP.NET View State" が一番有用で分り易かった。ASP.NETのページ処理のLifeCycleをまず解説しており、全体像を把握できるように配慮されている。
ViewStateを介したXSS攻撃:
セキュリティ上の対処としては以下の2点に尽きる。
FiddlerとそのPluginであるWatcherを使うと、MACが有効か自動判定してくれるようだ。実際に手許で動かしたわけでないので、未確認情報。
2000年に購入した冷蔵庫が壊れた。11年動きつづけた。冷蔵庫ってやっぱり10年は同じの使い続けるよな・・・。
そして、処分がそれなりに面倒くさいという罠。
買い替えで引き取ってもらうのも有りなんだけど、もともと今のアパートに備え付けの小型冷蔵庫があり、別に自炊するわけでもないのでそれで問題なく収納できてしまい、ならわざわざ新しいのを購入する必要もないだろうと。
とはいえ民間業者に頼むと、お役所経由の2-3倍の値段になってしまうので、別に急ぎでもないのですなおにお役所経由の手続きをする予定。
ものを捨てるにもお金のかかる時代。
「寒い時代だと思わんか?」
どれくらいあるのか、簡単に漁ってみました。
TCP, UDP | java.net | ストリーミングとデータグラム。 |
HTTP | org.apache | HTTPクライアントライブラリ。 |
SIP | android.net.sip | Session Initiation Protocl |
RTP | android.net.rtp | Real-TIme Transport Protocol, VoIPや動画ストリーミングなど。 |
こんなところかなぁ。
インターネットは関係ないけど、とりあえずプロトコルっぽいもの:
NFC | android.nfc | Near Field Communication, Felicaなど。 |
MTP | android.mtp | Media Transfer Protocol, USB接続のメディア機器など。 |
SMS | android.telephony.gsm | GSM専用のSMS。 |
どうしても「あのプロトコルが使いたい!」ってゆーのがあれば、TCPとUDPはjava.netがあるので、Javaの世界の既製ライブラリを移植するなり、自分で頑張って実装するなり、という流れになると思う。
参考:
テストの自動化メモ。
Android上でのActivityTestの基本。Javaのinstrumentと同様、仮想マシンとクラスの間にインターセプト出来る。
android.testパッケージ以下にinstrumentを使ってUIを操作「したことに」して各種Testを実行可能なクラスが用意されている。
PowerMockを開発しているJaywayが、その有り余るHENTAI性をAndroidのUIテストの自動化に注ぎ込んだのがRobotium。
"Android開発におけるSelenium"を目指しており、UI部品の内容に対するexpectationを記述や複数Activityにまたがるテストを簡単に記述できる。
個人的には、あのJaywayがメイン開発に携わっていることから将来性も高いと感じる。
Robotiumによる自動化テストで、画面のキャプチャなどもまとめて取得できるよう、特にチーム開発での運用面をサポートするツールとしてsciroccoが公開されている。
こちらは日本にあるSONIXという会社が開発している。
Googleが開発したUIテスト自動化ツール。Seleniumで使われているWebDriverと類似のAPIでUIをテストできるようになる。Robotiumの競合に位置づけることが出来る。
nativedriverの場合、テスト対象のアプリ側にテストサーバ機能を持つ専用のjarファイルを追加するなどが必要。とはいえ、アプリ側のロジックに副作用が出るような形はさすがにとっていない。
マルチプラットフォーム対応を目指しており、既にAndroidに対応しているが近日中にiOSにも対応予定。Windowsも視野に入れている。
デバッグ機能を使ってUIを操作する・・・らしい。
ただしタップイベントなどを x, y の座標値で指定する必要が有るため、実用は難しいかもしれない。
ちなみに、InstrumentationとRobotiumは2011-06時点では「再生」だけで「記録」機能が無い。
一方、monkeyrunnerにはドキュメント化はされていないが MonkeyRunner Recorder という機能が隠されている。
これを使うとRecorderを一種のUI操作Proxyとして、あとでmonkeyrunnerで実行出来る形式のpythonスクリプトでUI操作を保存できる。
ただしmonkeyrunnerでは操作した結果を取得する機能が画面snapshotの取得しか使えない。プログラムで画面UIの変化を検出する機能が存在しない。
この点が、UIテストの自動化に組み込むにあたりデメリットになるだろう。
自分用メモ:
対策については参考資料を参照。
参考資料:
Session Adoptionについて:
参考:
仕事中、FormやCookieのkey名に"="を含めたらどうなるのだろう?という話題が出た。
<input type="text" name="foo=bar" value="" />
や、
Set-Cookie: foo=bar=baz
の時、どんな挙動がみられるのか?
ということで、FormとCookieのそれぞれについて、最初にRFC上での"="の扱いについて調べ、続いて実際に動作を確認してみたメモ。
WebSocket関連のメモ。
TCPレベルでのプロトコルを定めたのが"The WebSocket protocol"で、これはIETFで策定している。
継続してバージョンアップしており、2011-08現在は HyBi-10 という略称(Hypertext-Bidirectional)のバージョンが最新。
一時期仕様上のセキュリティ問題が見つかっており、Firefox4やOpera11でデフォルト無効にされたこともあった。
そして実際にJavaScriptから使用できるAPIのインターフェイスを定めたのが"The WebSocket API"となり、W3Cで策定している。
基本的に開発者は"API"の方だけを知っていれば良い。ただしネットワーク環境によってProxyを導入していたりするとTCPレイヤーでトラブルが発生する可能性があるので、そうなると"protocol"をある程度は知っている必要があるだろう。
nPOPQはPOP3プロトコル専用のメーラだが、軽い上にSMTPとPOPを割と透過的に扱えるので、出先でメールをチェックしたりメールサーバの動作確認を行うときに重宝している。
が、普段使いのメールチェックに限定すると最近はWebメーラで事足りるため、nPOPQのデータをThunderbirdを介してGmailに移すことにした。
上記サイトを参考にした。nPOPQのメールデータはドット区切りで、mbox形式ではないためThunderbirdには直接取り込めない。上記サイトではBecky!を経由してmbox形式に変換しているが、実際にやってみたところ文字化けしてしまった。そのため、自分の場合は秀丸メールを一時的にインストールしてそちらで試してみたら、文字化けせずにmboxに変換できた。ただし日付が全て1970-1-1になってしまったが、これは諦めた。
とりあえずこれによりThunderbirdを介してGmail側にメールデータを移行できた。
WebStorageのサンプルとメモ。
参考:
Firefox 6.0, Chrome 13, IE9 にて確認。
最近のお仕事で、StrutsっぽいWebアプリでGETとかPOSTパラメータ名が
foo.bar=...
みたいなドット区切りのを見かけるようになった。
PHPだと"_"に強制的に変換されてしまうのだが、Javaの世界だとどうなってるのだろう、と、数年ぶりにStrutsを触ってみた。
現在はStrutsが2.2.3まで出てる。
自分が最後に触ったStrutsは1.x系で、まさしくXML地獄となっていたのがだが、あれから多少楽になったようだ。
煩わしいForm定義から解放され、DIコンテナとの統合もなされ、洗練された印象を受ける。
で、肝心のドット区切りのパラメータについてだが、どうやらStruts2系ではパラメータの解釈でOGNLというのを使い、式評価によりJavaのオブジェクトに変換しているようだ。
例えば
user.address.city=FooBar
なら
action.getUser().getAddress().setCity("FooBar")
となり(actionというのは、Struts2ではFormを介さずに直接Actionクラス(POJO)に値を渡す形式になっているから。)、
user['favoriteDrink']=green-tea
なら
action.getUser().setFavoriteDrink("green-tea")
と解釈される。
なるほど、こりゃ楽でいいわ・・・と喜んだのも束の間。
Struts2の公式サイトのドキュメントを漁ってたら、
の"S2-005"経由で、
OGNLの式評価ではメソッドの実行やインスタンスの生成なども可能なので、悪意のあるパラメータを設定することで任意のJavaコードを実行できてしまう可能性が・・・(´・ω・`)。
ということで、最新版のStrutsを使うか、ParametersInterceptorのexcludeParamsでホワイトリストorブラックリストで受け付ける文字種を限定しましょう、というお話。
あと、OGNLとして受け付けられない不正な値が入力された場合、裏側でOGNLのparseに失敗してればログを出力してくれるので、その辺もチェックしてみると良いかも。