アプリ版:「スタンプのみでお礼する」機能のリリースについて

下記の通り、データ入力用のフロントエンド(html)、DB向けのクエリ発行用スクリプト(PHP)、
データベース(MySQL)で構成されたWebアプリケーションがあるとします。

index.html <データを入力>
  ↓
insert.php <DBへクエリ発行>
  ↓
DB <クエリに従って値をinsert>

index.html上のフォームに入力された文字列をDBに挿入するという主旨です。
この時、文字列に半角/全角スペースが含まれる場合は、半角/全角スペースを排除して
DBに挿入するとします。
半角/全角スペースを排除した旨の通知はしません。


このような値の正規化はどのタイミングで行うのがベストでしょうか?
正規化を行うチャンスはすべての段階で存在すると理解しています。

・index.html
  Javascriptにて、submitする前に値を正規化してPHPへ渡す。
   → Javascriptが無効化されていると不可
     (しかし、今時Javascriptを無効化するユーザがいるだろうか)。

・insert.php
  ここで正規化してDBへ渡す。
   → 経験上、これが一般的と感じる。

・DB
  ストアドプロシージャ等を用いて、正規化した値を挿入する。
   → 最近MySQLでプログラミングのようなことが出来ることを知り、ここで正規化するのも
     アリではないかと考えた次第。


メンテナンス性やパフォーマンスなど、様々な観点からご意見を頂けると幸いです。

A 回答 (1件)

> このような値の正規化はどのタイミングで行うのがベストでしょうか?



一言で言えば「処理の入口で行う」だと思います。

ただ、入口はいくつもある場合があります。

質問の例なら、ユーザーがブラウザ上で入力する
箇所が主な入口ですが、ハッカーがブラウザを
使わずに直接PHPにリクエストする可能性があるなら、
PHPのリクエスト受け付け部分も入口です。
データベースも、自分が管理しているプログラム以外から
アクセスされる可能性があるなら、そこも入口です。

場合によっては、それぞれの入り口全てでやらなければ
ならない場合もありますし、データベースの格納値に
スペースが入っていることが後の処理に影響しないなら、
特にデータベースアクセス時点でスペース削除する必要は
ないと思います。

また、PHPのリクエスト受け付け部でスペース削除しているから
といってブラウザ側でスペース削除する必要がないとも
限りません。
ユーザビリティ(使いやすさ)を考えて、文字入力段階から
スペースが入らないように正規化した方がよいかもしれません。
ただ、入口の文字入力段階ではなく、submitする時に
ユーザに知らせず勝手にスペース削除するだけでは意味がないと
思います。スペースが含まれているかチェックして、ユーザに
お知らせするか再入力させるならまだ意味があるかもしれません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!