WebAppSecのMLで知ったのですが、HDIVというStrutsのextensionがあるそうです。
HDIVには色々な機能があるようですが、
- 完全性
hiddenの値、プルダウンやラジオボタンの取りうる値、リンク、Cookieなどの改竄を検知する。 - 機密性
HTML内に現れるデータを隠蔽する機能。HTML内の http://www.host.com?data1=12&data2=24 というリンクURLを、http://www.host.com?data1=0&data2=1 に書き換える例が挙げられている。 - バリデーション
テキストボックスなどの値を自動検証する。XSSやSQLインジェクション除け(「サニタイズ」的な思想に基づく)。
などが挙げられています。
実際に触っていないので詳細はわかりませんが、ASP.NETのViewState、EnableEventValidation、validateRequestなどに発想が似ていると思いました。フレームワークは、ASP.NETの世界に近づいていくんでしょうかね(単にHDIVの作者がASP.NET好きなだけかもしれませんが)。
確かに、ASP.NETは進んだプラットフォームだと思います。私も初めてASP.NETに触れたときには、こりゃすげーと驚いたもんでした。ただ同時に、余りにブラックボックス的だし、色んなものを型にはめようとする窮屈さも感じたのでした。
例えば、上記の「完全性」に書いた機能では、ラジオボタンの選択値によって、プルダウンの選択肢を自動で変更するようなJavaScript実装をしていた場合、サーバ側で「攻撃者がプルダウンの値を改竄した!」と勘違いしそうです*1。
そういうところでも、やたらと自由なHTML/JavaScriptの世界と、型にはめようとする世界とのミスマッチというか、何とも言えないモヤモヤした気持ちの悪い感じを受けてしまうのでした。