フォーム

フォーム (HTML)

[1] HTMLフォーム (form) とは、 通常の内容マーク制御子 (コントロール) (control) と呼ぶ特殊な要素、 制御子の (ラベル) からなる文書の部分です。 利用者は普通、制御子を編集することによってフォームをめてから、 フォームを提出します。

[2] 仕様書:

[3]

フォームの再設定 (リセット) (reset)
フォームを再設定すると、制御子現在値初期値に戻されます。 初期値がない時の挙動は未定義です。 HTML 4 17.2
フォームの提出 (submit)
フォームを提出すると、成功制御子の名前と現在値の組がフォーム処理エージェントに渡されます。 HTML 4 17.2, 17.13

概念

[17] 次のような概念や機能があります。

レンダリング

[5] WWWブラウザが頁を読み込みながら徐々にレンダリングしていると、 その頁に含まれるフォームも当然徐々にレンダリングされていくことになります。 しかし、 UA は、 フォーム全体をレンダリングするまで利用者がフォームを提出できないようにするべきです。 クライアント側スクリプトが使われている時にも、 フォームの絡みでうまく動作しなくなる虞があります。 HTML 4 B.6.1

また、タブ移動 (tabindex) にも注意が必要です。 HTML 4 B.6.1

法律に関して

[6] フォーム自体は純粋に技術ですが、そのフォームの使い方により法律に関する問題が関係することがよくあります。 例えば、日本国の法律が適用される場合、 個人情報を扱うのであれば個人情報保護法に注意する必要があります。 また、通信販売等の商取引の目的で使用するのであれば、 特定商取引に関する法律に基づく表示が必要かもしれません。

事業者利用者 (顧客) の所在地など、場合によっては複数の地域法律条例などの対象になることがあるかもしれません。

安全性に関して

[7] なりすまし: フォームが含まれる部分を特定の (信頼できると思われている有名企業や公的機関、あるいは銀行や通販サイトなどの) Webサイトの構成や特定のシステム (Webブラウザオペレーティング・システムの機能など) の画面に見せかけたりして、実際の怪しい情報送信先を偽る手口が取られることがよくあります。 (一般に利用者が常にあらゆることに注意を払い続けることは困難なので、フォームではなく単純なリンクを用意するだけでも怪しい Web頁への誘導に十分利用可能です。)

Web が普及して多くの (知識の乏しい) 人も利用するようになったり、 商取引に利用されることが多くなったりしたこともあり、 近年このようななりすまし行為の温床となる機能や実装方法自体も Webブラウザ等の脆弱性とみなされるようになっています。

しかし、単体の Webブラウザの対策は進んでいますが、 仕様上回避不能な場合もありますし、 Webブラウザ以外の用途が主のソフトウェアに Webブラウザ機能が組込まれている場合は対策が十分でないこともあります。

特に問題が起こり得ると考えられるのは電子メイルHTML などのフォームを利用した場合です。 電子メイルの送信元情報などは容易に詐称可能なことや、 フォーム提出先の情報を明示しない実装が一般的なことから、 信頼できる送信元からの情報提供依頼に偽装し、 しかも (知識の乏しい) 閲覧者に信頼させることが比較的容易です。

[8] 電子メイルフォームを含めて送信し、 受信者提出させる方法は現在のところ然程使われていませんから、 電子メイル利用者エージェントフォームを無効にするのがよいかもしれません。 ただ、正しく使えば非常に有益な機能なだけに、 安全対策のために利用できなくなるのは残念なことでもあります。

歴史

[4] ウェブのフォームのおおよその進化の過程:

         簡易版フォーム      完全版フォーム      追加機能              関連規格
                                                 isindex
                             HTML+
                               ↓
                             HTML 3
          HTML 2.0  ←←←← (I-D, W3C WD)       file upload
          (RFC 1866)           ↓                (RFC 1867)
            ↓  ↓             ↓                keygen (NN)
      HTML 3.2  HTML 2.x       ↓
     (W3C Rec)  (RFC 2070)→ HTML 4 (Web Forms 1.0)
         ↓                  (W3C Rec)           device-upload
         ↓                    ↓                (W3C Submission)
         ↓                  XHTML 1.0           自動補完 (WinIE 他)   ime-mode (WinIE)
         ↓                  (W3C Rec)           入力制御 (携帯電話)
    Basic        XHTML m12n    ↓                                       XForms 1.0
    Forms Module  (W3C Rec)  Forms Module                               (W3C Rec)
                               ↓
                             Web Forms 2.0                              CSS3
                             (WHAT WD)                                  (W3C Drafts)

HTML4

[21] HTML 4 仕様書は、 既知の問題点として、 特に次のことを (もしかしたら将来の規格で改善するかもしれない例として) 取り上げています。

[22] HTML 4 仕様書 B.6.2 Future projects <IW:HTML4:"appendix/notes.html#h-B.6.2">

  • フォーム欄の種類が現代的な UI に比べて少ない。例えば表データやスライド器や複数頁配置の機能が無い。
  • 鯖が提出したフォームの欄の値を更新できず、 HTML 文書全体を送らなければならない。
  • 音声ブラウザ視覚障害者がフォームと対話するのに問題がある。
  • input//imageクライアント側画像写像を使えるように usemap 属性を追加するのがよいかも。位置に対応する area 要素が鯖に渡す値を提供する。鯖側のスクリプトを修正しなくて済むように、 area が座標を提供できるよう拡張するのが適当かも。

Web Forms 1.0

[20] Web Forms 1.0 は、 HTML 4.01フォーム機能の通称です。 Web Forms 2.0 に対する拡張前という意味で使われることがあった語です。

メモ

[9] * がついた項目は必須ですのようになってることが多い中、逆に* がついた項目は任意ですなこともあって紛らわしい。

(名無しさん 2006-10-30 23:57:10 +00:00)

Web Forms

[10] Web Forms は、ウェブで用いられている HTMLフォームの仕組みです。

[11] Web Forms 1.0 は、 HTML 4 のフォームの章で定義されたフォーム機能です。

元々の HTML 4 版と、そのまま XML に移植した XHTML 1.0 版、 XHTML m12nForms モジュールの大きく3種類がありますが、 いずれも本質的には同じです。

[12] Web Forms 2.0 は、 WHAT が提案する拡張されたフォーム機能です。 Web Forms 2.0 と既存の UA のフォーム関連の拡張に加えて様々な新機能が含められています。 HTML 4 の拡張と XHTML 1 モジュールの2種類の使い方ができます。

[13] ところで、 Web Forms 1.0 は初代のフォーム (HTML 2.0 版 ≒ HTML 3.2 版) にファイルうpとか fieldset とかを追加したものなのですけど、初代の方にも誰か番号を付けてくれないのですかね? 0.0 とか 0.5 とか? HTTP のように 0.9 というのもありかも。

XHTML m12n Basic Forms モジュール (HTML 3.2 版 + label) にもついでに番号を振ってもらえるといいかもとか。

[14] Web Forms 2.0 ( 版) <http://www.whatwg.org/specs/web-forms/current-work/#forms>

[15] 使いやすさ日記: 672. Googleが作るとクレジット決済Webフォームはこうなる ( ( 版)) <http://usability.ueyesdesign.co.jp/diary/672_googleweb.html>

[16] XBL 2.0 ( ( 版)) <http://dev.w3.org/2006/xbl2/Overview.html#html-forms>

[18] DocBook 5.x Customizations ( 版) <http://docbook.org/schemas/5x-custom.html>

This is a community project; it is not an official product of the DocBook Technical Committee.

The “forms” schema adds HTML forms elements to DocBook.

[19] Google Online Security Blog: Next Steps Toward More Connection Security () <https://security.googleblog.com/2017/04/next-steps-toward-more-connection.html>

Beginning in October 2017, Chrome will show the “Not secure” warning in two additional situations: when users enter data on an HTTP page, and on all HTTP pages visited in Incognito mode.

[23] New in Chrome 62  |  Web  |  Google Developers () <https://developers.google.com/web/updates/2017/10/nic62>