Bug 6791 maxlengthが設定されているinput要素で、一文字も追加できない状況でIMEで文字を入力するとmaxlength値を超えた文字数の文字が入力できる
初回投稿日時: 2011年05月19日19時16分52秒
カテゴリ: HTML Mozilla Core Mozilla6 バグ修正
SNS:
Tweet (list)
久しぶりにBugzilla-jpに報告されたバグの修正です。maxlength
が指定されている<input>
要素で既に限界まで文字が入力されている状態で、IMEで文字列を入力して確定すると、未確定文字列がそのまま残り、value
プロパティ値には含まれてしまっているため、制限文字数を超えて入力できてしまう、というバグです。
原因は、maxlength
に到達している段階で文字を入力しようとすると、そのまま処理を中断するように修正されていたことでした。
未確定文字列は内部では独立したテキストノードとして挿入されていて、さらにこのテキストノードを内部処理用の特殊な選択範囲で選択していることにしています。今までは文字列がまったく入力できない状態でも、この未確定文字列を掃除する処理が走っていたのですが、前述の修正でこれまでスキップされるようになっていました。
IMEによる文字列の挿入時にはショートカットしないように修正して解決しています。
ちなみに、今回のように、ブラウザのバグで制限文字数を超えた値がサーバに送信されてしまう可能性もありますが、意図的な攻撃でそうなる可能性もありますので、Webアプリの開発者の方は必ず値の妥当性は検査するのを忘れないようにしてください。