inputタグのname属性の文字数が多くなる理由
inputタグに複数のdata属性を設定しています。そのdata属性には、そのinputタグのvalueをhtmlで出力する際のルール(赤文字で出力する等)が動的に入ります。POSTの際にそのinputタグの全てのdata属性の中身をname属性に詰め込む仕様にすることで、
・keyにhtmlで出力する際のルールを全て詰め込む
・valueにhtmlで出力する文字列を詰め込む
という状態でデータベースに保存し、それをhtmlに出力する際は、keyの中身をチェックして何色で出力するか等を条件分岐した上でvalueを出力しています。
だんだん出力する際のルール(文字の大きさ、背景色、その他)が多くなり、気づけばname属性の文字数が300文字を超えていました。
//html(name属性の値は、data属性の中身が自動的に反映されるようになっています) <input type="text" name="color=red,size=18px" data-color="red" data-size="18px" value="山田"> //php key名に「color=red」が含まれていたら、valueを赤文字で出力というふうに条件分岐しています。
レンタルサーバー側のファイアウォール(WAF)にひっかかる
name属性の文字数が300文字を超えたとき、利用しているCONOHAレンタルサーバーのWAFにひっかかりました。バッファオーバーフロー攻撃試行の可能性と勘違いされたようです。
知りたいこと
WAFにひっかかったとき、私は焦りました。以下のことが気になったからです。
「name属性に、出力のルールを詰め込むようなやり方は、問題があるやり方(もしくは邪道なやり方)なのか」ということです。
inputの値(value)とは別に、そのvalueを出力する際のルールもphp側で受け取りたいと考えたとき、name属性に含める以外に方法を思いつかなかったのですが、このやり方はリスクがあるのでしょうか。
その場合、こういうときベテランの方はどのような方法を取っているのでしょうか。
ご存じの方がいらっしゃいましたら、どうかご教授頂けましたら幸甚に存じます。
何卒、よろしくお願い申し上げます。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/08 21:50 編集
2021/09/08 22:29
2021/09/09 05:33