岩本隆史の日記帳(アーカイブ)

はてなダイアリーのサービス終了をうけて移行したものです。更新はしません。

htmlspecialcharsに関する残念なお知らせ

「htmlspecialcharsのパッチ私案」に書いた件、バグレポートを出してみましたが、「すでに同じバグレポートがあるだろ」という理由により、あえなく却下されました。せめて先方が「同じ」とみなしているレポート番号ぐらいは示してほしくて、そのようにコメ…

htmlspecialcharsのパッチ私案

PHPのhtmlspecialchars関数について、文字エンコーディングの妥当性チェックが不充分であること、また場合によってはXSS攻撃が可能になることが、下記ふたつの記事で指摘されています。 htmlspecialcharsは不正な文字エンコーディングをどこまでチェックする…

たまにはDIのことも思い出してあげてください

以前、設計勉強会でご一緒させていただいた坂本さんが、おもしろい記事を書かれています。 技術/TDD/JavaにおけるUnitTest時のMockオブジェクトの導入手法 - Glamenv-Septzen.net DIを使わずに依存オブジェクトをモックに差し替える手法を紹介する記事です。…

セッションIDのみの認証はセキュリティレベルが低いのか

はてなブックマークモバイル版の脆弱性 昨日、はてなブックマークモバイル版の脆弱性に関する報告が公開されました。 「はてなブックマーク モバイル版」の脆弱性を利用した不正アクセスに関するご報告 - はてなブックマーク日記 - 機能変更、お知らせなど …

XSS対策パッチを当ててもRailsに残る脆弱性

どのような脆弱性か 先日書いた「Rails 2系のXSS脆弱性がRuby 1.9では影響なしとされる理由」という記事に、奥さん(id:kazuhooku)より、下記のブックマークコメントをいただきました。 たとえばブログの場合、誰かに壊れたUTF-8を含むコメントを書き込まれ…

Rails 2系のXSS脆弱性がRuby 1.9では影響なしとされる理由

Rails 2系のXSS脆弱性を修正するパッチが先日公開されました。 4日(米国時間)、Ruby on Railsの2系すべてのバージョンにXSSの脆弱性があることがRiding Rails: XSS Vulnerability in Ruby on Railsにおいて発表された。特定のUnicode文字列を使ってチェック…

なぜステートレス性が重要でないのか

いわゆる「文字エンコーディング問題」は、セキュリティ専門家の間でも意見が分かれているようなので、そちらにおまかせします。今回は、RESTについて久々に考えてみます。日本Ruby会議2008で、山本陽平さんが「REST信者から見たRuby on Rails 2.0」と題した…

不正な文字列をどこでチェックすべきか

大垣さんの書かれた: 不正な文字エンコーディングを利用した攻撃は、文字エンコーディングを厳格に取り扱い、文字エンコーディングをバリデーションすれば無くなります。これを怠ると、システムのどこで問題が発生するか予想できなくなります。つまり、いい…

第3回設計勉強会に参加した(発表も)

PHPのフレームワークを使った実際のプロジェクトでどういう風に設計し、その結果、どこが良かったか/いまいちだったかを皆で持ち寄って議論できればと思います。 第3回設計勉強会 - events.php.gr.jp という主旨の勉強会に、PHPのフレームワークを実際のプロ…

POSTリクエストをリダイレクトしたい状況とその対応

Webアプリケーションを作成する際には,POSTのリクエストをリダイレクトして,そのまま別のURLにPOSTさせるということはできないと思っておいたほうが良さそうですね. POSTリクエストをリダイレクトするとGETされる?POSTされる? - はこべにっき ♨ HTTP/1.1…

hAtomを含むXHTMLをサーバサイドでもAtomテンプレートとして使うのはどうか

Ruptaに続いては、MVCのVに関わるライブラリを作ろうと思っています。さて、あるリソースについて、さまざまな表現でクライアントに返したいことがあります。単純な例は、コレクションリソースをHTML文書として返したり、Atomフィード文書として返したりする…

(次回試そうと思っている)GitHubでRubyGemを公開する手順

前々回の記事で「次回は、Ruptaを作成・公開するにあたって工夫した点や苦労した点について書こうと思っています」と予告しました。前回の記事ではライブラリインターフェースについて触れただけでしたので、今回は、工夫した点と苦労した点について触れなが…

望ましいライブラリインターフェースとは

前回の記事で「次回は、Ruptaを作成・公開するにあたって工夫した点や苦労した点について書こうと思っています」と予告しました。予告はしたものの、どこから書こうか迷っていたら、恰好のコメントをid:takahashimさんよりいただいたので、その辺りについて…

なぜRuptaを公開したのか

Ruptaという名前のRubyライブラリをGitHubで公開しました。 http://github.com/iwamot/rupta/tree/master http://iwamot.github.com/rupta/ (ドキュメント) Ruptaは、いわゆるWebアプリケーション用のルータライブラリです。ライブラリと名乗るのもおこが…

何をクラス分割の指針とすべきか

最近なんとなく: クラスの保持するインスタンス変数をなるべく少なくする インスタンス変数を使わないメソッドをクラスに含めない ようにすれば適切にクラス分割できるんじゃないかと考えていました。今日「凝集度と結合度:このコードのどこが悪いのか? -…

デメテルの法則厨がライブラリを作るとどうなるか

お題:クラス名からそのクラスを得るライブラリ Webアプリのフレームワークを作っていて、クラス名からそのクラスのインスタンスを生成したくなりました。リクエストURIによって呼び出したいコントローラが変わるためです。そこで、下記のような ClassGetter…

デメテルの法則を守るためのずるい方法

思いついた。デメテルの法則(Law of Demeter、デメテルの掟とも)とは、あるオブジェクトのメソッドの中で: オブジェクト自身 メソッドの引数 メソッドの中で生成したオブジェクト インスタンス変数 以外のオブジェクトのメソッドを呼び出すと大変なことに…

「フィードリーダー疲れ」をアグリゲータが救う?

RSS BanditというWindows用フィードリーダーがあります。製作者のひとりであり、Microsoftのエンジニアでもある Dare Obasanjo 氏が、自身のブログで「RSS readers modeled after email clients are fundamentally broken」(Eメールクライアントに倣ったRSS…

私が RESTful API の後方互換性を気にするケース

前回の記事「RESTクライアントが知っているべきこと」に、id:nsiena さんからトラックバックをいただきました。 RESTful API の後方互換性 - Siena.の日記 斜め上の応答になってしまうかもしれませんが、思ったことを書いてみます。 API変更の性格分類とサー…

RESTクライアントが知っているべきこと

クライアントとサーバの密結合を避けられるのが、RESTスタイルに従って得られるメリットのひとつです。クライアントが、アプリケーションの挙動に関する知識をほとんど持たなくてよいわけです。とはいっても、まったく何も知らないではクライアントたりえま…

WebアプリケーションフレームワークにおけるHTTPステータスコードの扱い方

最近、HTTPやらWADLやらMVCやらについて考えていたのは、Webアプリケーションフレームワーク*1を自作する*2うえで必要な作業だったからでした。方向性は見えてきた(と思いたい)ので、今回は「フレームワークにおいてHTTPステータスコードをどう扱うべきか…

Webアプリにおける適切なレスポンスボディとは

「HTTPの仕様からWebアプリのMVCを見直す」という記事を書きながら、Webアプリにおける適切なレスポンスボディとはどのようなものなのか、あらためて考える必要があると感じました。今回の記事はその実践です。 考えるべきケース まず下記のようなケースは、…

ブログ分割のお知らせ

今さらかもしれませんが、この「岩本隆史の日記帳」には、技術(おもにWebアプリ開発)に関する話だけ書くことに決めました。観た映画の感想や、好きな音楽の話などは「iwamotの非技術日記(映画、音楽等)」に書きます。よろしくお願いいたします。

HTTPの仕様からRESTfulなWebアプリのMVCを見直す

Smalltalk由来のMVCとWebアプリのMVC 最近、WebアプリにおけるMVCに関する記事をふたつ書きました。 WebアプリでもSmalltalkのMVCパターンが使えるかも サーバサイドでSmalltalkのMVCパターンを使うのは無理があるかも これらの記事で私が想定しているのは、…

WADLは必要か・最終回

「WADLは必要か・その1」「WADLは必要か・その2」の続きです。 WADL文書を公開するのはクライアントにフォームを作らせたいから 前回は、私の思いついたWADL文書の使い方を例示しました。クライアントによるフォームの動的生成を期待して、リソースへのリク…

WADLは必要か・その2

「WADLは必要か・その1」の続きです。 フォームをクライアントに作らせたい 一般的なWebアプリケーションでは、サーバがフォームを作ります。form要素の含まれたHTMLをクライアントに返すわけです。しかし、「サーバサイドでSmalltalkのMVCパターンを使うの…

WADLは必要か・その1

識者の間でも結論は出ていない RESTfulなWebサービスのための仕様記述言語・WADL(Web Application Description Language)の必要性については、識者の間でも意見が分かれています。Leonard Richardson(『RESTful Webサービス』の著者の一人)は必要派(「I…

『レッドクリフ Part II』を観た

池袋シネマサンシャインで映画『レッドクリフ Part II』を観た。客席の勾配が少ないため、前の客の後頭部でスクリーン左下6分の1ほどが隠れ、見づらかった。「アタック25」の最終問題でもあるまいし、もうわざわざここで観ることはないだろう。映画自体はお…

サーバサイドでSmalltalkのMVCパターンを使うのは無理があるかも

「WebアプリでもSmalltalkのMVCパターンが使えるかも」という記事に書いたアイディアについて、ここしばらく考えていました。結果、より良いと思われるアイディアが見つかったため、捨てることにします。リソースをHTMLでのみ表現するならば、ブラウザに表示…

『スラムドッグ$ミリオネア』を観た

新宿の東京厚生年金会館で開かれたUSENの株主優待試写会で『スラムドッグ$ミリオネア』を観た。どこまでがインドのスラム街の現実なのかどうか知らないが、目をそむけたくなるような暴力と貧困の描写が続く、強烈な映画だった。「貧困は悪」という考え方が…