* フォーム (HTML, XHTML 1) [1] [ABBR[[[HTML]]] [ハイパーテキスト・マーク付け言語]] の[DFN[[RUBYB[フォーム] [form]]]]とは、 通常の[[内容]]、[[マーク]]、[DFN[[RUBY[[[制御子]]] [コントロール] [control]]]]と呼ぶ特殊な要素、 制御子の[RUBY[[[札]]] [ラベル]]からなる文書の部分です。 [[利用者]]は普通、制御子を編集することによってフォームを[Q[埋]]めてから、 フォームを提出します。 [2] 仕様書: - [[HTML 4]] -- [CITE[Forms in HTML documents]] -- [CITE[B.6 Notes on forms]] -- [CITE[B.10 Notes on security]] [3] :フォームの[RUBY[[[再設定]]] [リセット] [reset]]: フォームを再設定すると、[[制御子]]の[[現在値]]は[[初期値]]に戻されます。 初期値がない時の挙動は未定義です。 [SRC[HTML 4 17.2]] :フォームの[RUBYB[[[提出]]] [submit]]: フォームを提出すると、[[成功]]制御子の名前と現在値の組が[DFN[フォーム処理エージェント]]に渡されます。 [SRC[HTML 4 17.2, 17.13]] [[#comment]] ** 歴史 [4] ウェブのフォームのおおよその進化の過程: [PRE[ 簡易版フォーム 完全版フォーム 追加機能 関連規格 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) ]PRE] [[#comment]] ** レンダリング [5] [[WWWブラウザ]]が頁を読み込みながら徐々に[[レンダリング]]していると、 その頁に含まれるフォームも当然徐々にレンダリングされていくことになります。 しかし、 [ABBR[[[UA]]] [[[利用者エージェント]]]] は、 フォーム全体をレンダリングするまで[[利用者]]がフォームを[[提出]]できないようにするべきです。 [[クライアント側スクリプト]]が使われている時にも、 フォームの絡みでうまく動作しなくなる虞があります。 [SRC[HTML 4 B.6.1]] また、タブ移動 ([CODE(HTMLa)[[[tabindex]]]]) にも注意が必要です。 [SRC[HTML 4 B.6.1]] [[#comment]] ** 法律に関して [6] フォーム自体は純粋に技術ですが、そのフォームの使い方により[[法律]]に関する問題が関係することがよくあります。 例えば、[[日本国]]の法律が適用される場合、 [[個人情報]]を扱うのであれば[[個人情報保護法]]に注意する必要があります。 また、[[通信販売]]等の[[商取引]]の目的で使用するのであれば、 [[特定商取引に関する法律]]に基づく表示が必要かもしれません。 [[鯖]]や[[事業者]]や[[利用者]] ([[顧客]]) の所在地など、場合によっては複数の[[国]]・ [[地域]]の[[法律]]や[[条例]]などの対象になることがあるかもしれません。 [[#comment]] ** 安全性に関して [7] '''なりすまし''': [[フォーム]]が含まれる部分を特定の [WEAK[(信頼できると思われている有名企業や公的機関、あるいは銀行や通販サイトなどの)]] [[Webサイト]]の構成や特定のシステム ([[Webブラウザ]]や[[オペレーティング・システム]]の機能など) の[[画面]]に見せかけたりして、実際の怪しい情報送信先を偽る手口が取られることがよくあります。 [WEAK[(一般に[[利用者]]が常にあらゆることに注意を払い続けることは困難なので、[[フォーム]]ではなく単純な[[リンク]]を用意するだけでも怪しい [[Web頁]]への誘導に十分利用可能です。)]] [[Web]] が普及して多くの (知識の乏しい) 人も利用するようになったり、 [[商取引]]に利用されることが多くなったりしたこともあり、 近年このような[Q[[[なりすまし]]]]行為の温床となる機能や実装方法自体も [[Webブラウザ]]等の[[脆弱性]]とみなされるようになっています。 しかし、単体の [[Webブラウザ]]の対策は進んでいますが、 仕様上回避不能な場合もありますし、 [[Webブラウザ]]以外の用途が主のソフトウェアに [[Webブラウザ]]機能が組込まれている場合は対策が十分でないこともあります。 特に問題が起こり得ると考えられるのは[[電子メイル]]で [[HTML]] などの[[フォーム]]を利用した場合です。 [[電子メイル]]の送信元情報などは容易に詐称可能なことや、 [[フォーム]]の[[提出]]先の情報を明示しない実装が一般的なことから、 信頼できる送信元からの情報提供依頼に偽装し、 しかも (知識の乏しい) 閲覧者に信頼させることが比較的容易です。 [8] [[電子メイル]]に[[フォーム]]を含めて送信し、 [[受信者]]に[[提出]]させる方法は現在のところ然程使われていませんから、 [[電子メイル]]の[[利用者エージェント]]は[[フォーム]]を無効にするのがよいかもしれません。 ただ、正しく使えば非常に有益な機能なだけに、 安全対策のために利用できなくなるのは残念なことでもあります。 [[#comment]] ** メモ [[#comment]] * メモ [9] [Q[[CODE[*]] がついた項目は必須です]]のようになってることが多い中、逆に[Q[[CODE[*]] がついた項目は任意です]]なこともあって紛らわしい。 ([[名無しさん]] [WEAK[2006-10-30 23:57:10 +00:00]]) * Web Forms [10] [DFN[Web Forms]] は、[[ウェブ]]で用いられている [[HTML]] の[[フォーム]]の仕組みです。 [11] [DFN[[[Web Forms 1.0]]]] は、 [[HTML 4]] のフォームの章で定義されたフォーム機能です。 元々の HTML 4 版と、そのまま [[XML]] に移植した [[XHTML 1.0]] 版、 [[XHTML m12n]] の [[Forms]] モジュールの大きく3種類がありますが、 いずれも本質的には同じです。 [12] [DFN[[[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]]とか [CODE(HTMLe)[[[fieldset]]]] とかを追加したものなのですけど、初代の方にも誰か番号を付けてくれないのですかね? 0.0 とか 0.5 とか? [[HTTP]] のように 0.9 というのもありかも。 XHTML m12n [[Basic Forms]] モジュール (HTML 3.2 版 + [CODE(HTMLe)[[[label]]]]) にもついでに番号を振ってもらえるといいかもとか。