富永日記帳

新着順表示|タイトル一覧|更新記事一覧|カテゴリ一覧

新着順表示

新着フィード

東急デヤ7290の新型架線検測装置 "CATENARY EYE (カテナリー アイ)"

公開日時:2012年2月26日21時35分

東急電鉄のサイトで告知があったとおり、デヤ7200(動力車)・デヤ7290(架線検測車)のさよなら運転が本日行われました。私も行ってきましたが、沿線はたいへんな賑わいでしたね。

さて、書く機会を逃していましたが、デヤ7290の架線検測装置が2010年に更新されています*1。この装置は明電舎が数年前に開発したCATENARY EYE(カテナリー アイ)(www.meidensha.co.jp)と呼ばれるもので、車両の屋根上に各種カメラや照明、センサーを配置して、トロリ線やパンタグラフの動きを画像解析するもののようです。

機器の詳細は明電時報 Vol.333(2011年)(www.meidensha.co.jp)鉄道と電気技術 平成24年2月号(www.rail-e.or.jp)にも掲載されているので、ご覧になった方も多いことでしょう。

屋根上機器は車両中央にある観測ドームの2位側(上り方)に搭載され、従来の菱形パンタグラフ(PT43形)では支障するためか、上り方の集電装置もシングルアーム型に換装されています。

さらに、1位側(下り方)には電車線路モニタ装置が搭載され、前方を撮影することで装柱の管理などを行っているようです。

なお、従来のトロリ線摩耗測定器も撤去はされず、1位側の測定用パンタグラフもそのままですが、もはや使われることはないようで、新装置搭載以降は検測運転時も下げたままで運用されていました。今日のイベント運転でも上げられませんでしたね。

  • *1実際に稼働開始したのは2011年に入ってからと思われます。

東急車輛でオールステンレス車両完成50周年イベントを開催、東急7000系DVDも販売

公開日時:2012年2月20日21時58分

東急車輛製造がオールステンレスカー50周年を記念して、今週25日にイベントを行うようです。

構内に保存されている東急5200系(デハ5201)、旧7000系(デハ7052)の公開などのほか、各種グッズも販売されるようですが、個人的に興味を惹かれたのが東急7000系「日本初!オールステンレスカー完成50周年記念」DVD(www.amazon.co.jp)

50年前に当社工場で撮影されたフィルムの映像や、現在も活躍する7700系の姿など7000系の魅力たっぷりのDVDです。

ほほぅ、これは期待してよいですかね。さっそくAmazonでポチってしまいました。

Developers Summit 2012で「趣味と実益の脆弱性発見」を聴いてきた

公開日時:2012年2月18日0時32分

デブサミ 2012(codezine.jp)に行ってきました。はせがわようすけ(twitter.com)さんの「趣味と実益の脆弱性発見(www.slideshare.net)」が興味深かったので、感想などを。

顔文字JavaScriptで会場の笑いを誘った後、「これまでに調べた脆弱性」と題して具体例3つの紹介が成されました。

  • Content-Tyoe無視によるXSS(IE)
  • UTF-7によるJSON Hijacking(IE)
  • E4X + Web Workers = データ漏えい(Firefox)

以下、ひとつずつ見てゆきたいと思います。

Content-Tyoe無視によるXSS(IE)

IE8までのセキュリティ設定には「拡張子ではなく、内容によってファイルを開く」があり、デフォルトで有効(msdn.microsoft.com)になっています。このためサーバー側で適切なMIMEを設定していても、コンテンツの中身によってはHTMLと解釈されXSSが発生する可能性があり、セキュリティ上のリスクとなっていることは古くから知られた事象です。

※なお、最新のIE9ではtext/plainなコンテンツをMIMEスニッフィングしなくなっています(blogs.msdn.com)

ユーザーの防御策はこの設定を「無効にする」に変更すること、サーバー側(サイト運営者)の対策は動的コンテンツのレスポンスヘッダに X-Content-Type-Options: nosniff を付けることですね。

UTF-7によるJSON Hijacking(IE)

IE7まではレスポンスヘッダで指定した文字コードより、script要素のcharset属性に指定した方を優先する仕様により情報漏えいが起こりうるというもの。

HTMLで文字符号化方法が複数の方法で指定されている場合の優先順位はHTML4.01の仕様で定められており(www.w3.org)The charset attribute set on an element that designates an external resource.はもっとも優先順位が低いのですが、IE7以下ではHTTPヘッダよりも優先されてしまうようなのです。わけがわからないよ。

※手元の環境で試してみたところ、Windows XP + IE7ではXSSが再現したのですが、Wondows 7 + IE8の互換モードでは発動しませんでした。本物のIE7以下でないとダメなのでしょうか。

E4X + Web Workers = データ漏えい(Firefox)

Firefoxでは、古くからE4X(developer.mozilla.org)を実装しており、一見ただのHTMLやXML断片に見える次のような文字列がJavaScriptとしても認識されます。

<p>{foo(<em>test</em>)}</p>

このため "{foo(" と ")}" のように、対象サイトの複数箇所に文字列を挿入することが可能な場合、罠ページにscript要素を書いて対象コンテンツのHTML文字列をJavaScriptとして読み取ることでデータの抜き取りが可能となっていました*1。その対策として、Firefox 3.5からは先のコードのように文字列がXMLリテラルしかない場合はJavaScriptとして扱わないようになったようです。

一方、Web Workersでは、importScripts()メソッド(www.w3.org)を使うことで別ドメインのスクリプトが実行可能ですが、この機能を使ったときはXMLリテラルのみの場合でもJavaScriptが動作するようになっていたため(Firefox3.6.6まで)、両者の技術を組み合わせることで外部サイトのデータを取得することが可能だった、というもののようです。

  • *1なお、XML宣言や文書型宣言があると読み取れません。つまりvalidなHTMLとなっていればとくに問題なかったものと思われます。

サイト移転しました

公開日時:2012年2月12日15時42分

2月12日にサイトを移転しました。注意点などを記載します。

  • メールアドレスが変わりました。従来のアドレスもしばらくは有効ですが、今後は新しいアドレス宛にお願いします。
  • Cookieの使用を開始しました。詳細はプライバシーポリシーにて。

旧URLからの転送については、次のようになっています。

  • トップページやフィードは転送しません。トップページにブックマークされている方や、各フィードを購読されている場合は手動で変更をお願いします。
  • トップページ以外のコンテンツと画像ファイルは自動で新ドメインに転送します。転送期間は未定です。
  • 鉄道ピクトリアルサイト新着情報のフィードのみ、引き続き旧ドメインで運用します。

link要素やstyle要素のmedia属性をJavaScriptで変更する場合のIEの挙動

公開日時:2012年1月14日23時17分

HTML5に関してこんな記事が。

IE8以下はHTML5で登場した新要素を認識しないため、そのままでは新要素にスタイルを充てることができません。そのため、html5shiv (html5.js)(code.google.com)などJavaScriptを使う方法がありますが、スクリプトを無効にしているユーザーには意味がありません。

そこでIE8以下がMedia Queriesに対応していないことを利用して、あえて認識しないようなmedia属性を記述し、JavaScriptで改めて認識する形に書き換える手法が紹介されています。このようにすることで、スクリプトが有効な環境であれば、html5.jsなども読み込まれるのでHTML5の新要素が認識され、またスクリプト無効な場合はlink要素やstyle要素で指定したスタイルが一切適用されなくなります。

※style属性で個々に指定したスタイルは適用されますが。

中途半端にスタイルが適用されるくらいならいっそブラウザのデフォルトスタイルとユーザースタイルシートのみで、という方針の場合は導入を検討してもよいかもしれません。

ところが、実施に試してみると特定の場合においてうまくいかないことが分かりました。たとえば次のHTML。

<!DOCTYPE html>
<html lang="ja">
<head>
<title>style要素のmedia属性をJavaScriptで書き換えてみる</title>
<style media="all">
p {
  color: #00f; /* 文字色青 */
  background: #fff; /* 背景白 */
}
@media print {
  p {
    color: #f00; /* 文字色赤 */
  }
}
</style>
<script>
document.getElementsByTagName("style")[0].media = "all";
</script>
</head>
<body>
<p>この文字は何色になるでしょう?</p>
</body>
</html>

style要素にmedia属性が指定してあり、これをスクリプトで書き換えています。テストのため書き換え前後の値はどちらも"all"で、実用上の意味はありません。スタイルの中身はp要素の文字色を青にするものですが、印刷時(@media print)のみ赤色になるようにしています。

ほとんどのブラウザではスクリプトの有効・無効に関わらず、ディスプレイに表示される文字色は青になりますが、IE8以下でスクリプト有効な場合のみ、なぜか赤色になります。link要素で外部スタイルファイルを読み込む場合や、media属性の書き換えを setAttribute() で行った場合も同様の結果でした。

一方で、「@media print」を「@media screen」と変えて印刷を行うと青色になります。つまり、このおかしな挙動はディスプレイ表示時において、Media typesの指定が無視される事象に思えます。