misc.log

日常茶飯事とお仕事と

検索条件にチェックディジットチェック

ちょっと疑問に思ったので、自分用メモ。

既存データに対する検索をかける際に、検索条件となる番号にチェックディジットが含まれているとします*1。検索条件を入力する処理に、チェックディジットチェックって必要なんでしょうか?

お客さんのポリシーなどによるので、そういう風に指定されていれば別にそれに従うまでですが、自分がゼロから提案するのならば以下の理由で検索時のキー入力にはチェックディジットの確認はやらないようにするかな。って。

  • そもそも番号が不一致なら検索結果にヒットしない。
  • チェックディジットに引っかかったことを検索する人に伝えてしまうと、「この番号にはチェックディジットが含まれているんだな」ということを知らせてしまう……正しい番号であるためのルールをばらすことになる。

というわけで。

エラーメッセージって気をつけないと、セキュリティや完全性確保の仕組みをほつれさせて、穴を開ける可能性があるので要注意なのです。

*1:チェックディジット: 口座番号などのような番号を新規に作る際に、1桁目などの値を、ほかの桁の値を元に計算して決定するという手法。これにより、適当な数字を口座番号として指定しても、一定のルールにそぐわない不正番号であると判断したり、番号の伝達ミス/エラーでも間違えて違う番号で通用してしまうことを減らせる。