- 締切済み
trim()のタイミング
Web-DBといえば、PHPが一番と思っているのでこのジャンルで質問させていただきます。 DBのChar型データと入出力を行う時、trim()を用いますが、どのタイミングで使うと良いのでしょうか? プログラムとSQL上で以下4個所が考えらます。 ・フォーム送信された変数 ・SQLのINSERTする項目 ・SQLのSELECTした項目 ・SQLのWHERE条件
- みんなの回答 (2)
- 専門家の回答
みんなの回答
osamuy さんのおっしゃられている原則に賛成です。 参考URLにIPAのセキュアプログラミング講座を案内します。セキュリティに関わらずデータに必要な加工をかけるのはいつかが適切かを解説とともに示してくれます。 で、Char型からのtrimとおっしゃっているのでおそらくDBにストアされた際にchar型の長さに従って補充された空白を削るタイミングですよね、、? なので今回の原則に従えば 「利用する時に削る」 のが適当なのではないかと思います。 例えばパスワードをフェッチして照合するならその照合を行う際に例えば if ($_POST['passwd'] = trim($db->password)) とやればいいのではないかと、、 もしくは処理が散らばってメンテナンス性を欠くことが問題になるなら PEAR::DB_QueryTool のようなクラスを利用して処理を統一し加工も集約してしまうという手もあります。 蛇足ながら > 同じtrim()を何度も記述しているプログラマって結構いまよね 昔某大手コミュニティサイトが多重サニタイジングでセキュリティホール作っていましたw trim ならかわいいものですが余計な処理はバグやセキュリティホールの元になりかねないので他山の石としたいものです =P
- osamuy
- ベストアンサー率42% (1231/2878)
一般的に言えば、「必要になるまでは無駄な事をしない」ですが、そもそもtrimする必要があるなら、その空白自体がムダと考えられますので、フォームから送られてきた時点で、trimしといた方が良いと思います。 同じtrim()を何度も記述しているプログラマって結構いまよね。
お礼
十分、参考になりました。感謝します。