foldrr's weblog

旧ブログ http://d.hatena.ne.jp/foldrr/

HTML のフォームで disabled は送信されない理由

HTML のフォーム系要素に disabled 属性を付加すると、リクエストパラメータとしてサーバへ送信されなくなる。
この振る舞いが困るために hidden を設けることがあるが、これはそもそもアプローチがおかしいのだと分かった。

なぜ hidden を設けようとするのか?

これはパラメータをサーバ側で利用するからだ。
だがクライアントから入力不可能であるということは、サーバは既にパラメータの内容を「知っている」ことになる。
よってクライアントから再度値を受け取るのは無駄になる。

また入力不可能な値であるにも関わらず、クライアントからの入力を不必要に信用して hidden の内容をデータベースに補完するのはセキュリティに問題がある。
hidden 値を必要とする理由の殆どがデータベースへ送信するデータを用意するためだ。
しかし、入力不可能である値というのはそもそもデータベースへ送信しない、あるいはデフォルト値を「サーバ側で」設定するものである。