HTML のフォームで disabled は送信されない理由
HTML のフォーム系要素に disabled 属性を付加すると、リクエストパラメータとしてサーバへ送信されなくなる。
この振る舞いが困るために hidden を設けることがあるが、これはそもそもアプローチがおかしいのだと分かった。
なぜ hidden を設けようとするのか?
これはパラメータをサーバ側で利用するからだ。
だがクライアントから入力不可能であるということは、サーバは既にパラメータの内容を「知っている」ことになる。
よってクライアントから再度値を受け取るのは無駄になる。
また入力不可能な値であるにも関わらず、クライアントからの入力を不必要に信用して hidden の内容をデータベースに補完するのはセキュリティに問題がある。
hidden 値を必要とする理由の殆どがデータベースへ送信するデータを用意するためだ。
しかし、入力不可能である値というのはそもそもデータベースへ送信しない、あるいはデフォルト値を「サーバ側で」設定するものである。