カテゴリー
Development

JavaScript無しでフォームをコントロール

(Last Updated On: 2008/09/03)

言われてみれば、そう言えばそんな機能があったね、と思うような機能はよくあります。
JavaScript無しでフォームを制御する方法はHTML4が策定されている時に追加された機能です。

http://www.w3.org/TR/html401/interact/forms.html#h-17.2.1

以下のLABELタグのサンプルは http://www.0x000000.com/?i=635 より拝借しています。

<label for="action">
<body>
      Etymology of "Foo" 1 April 2001
      When used in connection with `bar' it is generally traced to the
      WW II era Army slang acronym FUBAR (`Fucked Up Beyond All
      Repair'), later modified to foobar.  Early versions of the Jargon
      File [JARGON] interpreted this change as a post-war
      bowdlerization, but it now seems more likely that FUBAR was itself
      a derivative of `foo' perhaps influenced by German `furchtbar'
      (terrible) - `foobar' may actually have been the original form.
</body>
</label>

<form action="http://www.google.com" method="get">
    <input type="submit" id="action" style="display:none;">
</form>

通常のサイトではここまで自由にタグが記述できるようにはなっていないので問題となることはほとんど無いでしょう。

しかし、悪意があるサイトの場合は別です。実際に悪用できる場合、CSRFの様に利用できます。JavaScript無しもでページを表示するだけでCSRFを行う事が出来ます。JavaScriptが利用できなくても悪意のあるサイトと脆弱性が放置されたサイトが組合わさると防ぐことが出来ない場合がある、という良い例だと思います。