• 締切済み

テーブルの分散について

お世話になります。 個人情報を格納しているユーザーテーブルがあります。 項目は以下の通りです。 ------------------------------ 1.連番 2.ユーザーID 3.名前カナ(姓) 4.名前カナ(名) 5.名前(姓) 6.名前(名) 7.性別 8.生年月日 9.年齢 10.電話番号 11.携帯番号 12.メールアドレス 13.パスワード 14.職業 15.郵便番号 16.国 17.住所(都道府県) 18.住所(市区町村) 19.住所(町域(番地)) 20.住所(建物名) 21.備考1 22.備考2 23.備考3 24.備考4 25.備考5 ------------------------------ 上記のように個人情報を1つのテーブルにまとめてセキュリティ上、問題はありませんでしょうか。 もし上記のテーブルを分散するとしたらどのように管理するようにしたらいいのでしょうか。 くだらない質問で大変申し訳ありませんがご教授いただけたら幸いです。 何卒、アドバイスの方を宜しくお願いします。

みんなの回答

  • hymat
  • ベストアンサー率58% (95/162)
回答No.1

基本的に、セキュリティはデータベース単位のパスワードですから、テーブルを分けるかどうかは決定的ではないと思います。万一、パスワードが破られたら全部が漏洩したも同然です。特別に強固にするなら、テーブルを分けるだけでなく、別のデータベースにすべきでしょう。 しかし、データベースのパスワードが破られなくてもSQLインジェクション( http://www.geocities.jp/ikepy0n/SQLInjectin.html など参照)でデータを読み出される可能性があります。その対策としてテーブルを分けることはあります。 頻繁に使うのはログイン時のユーザーIDとパスワード、および表示用のユーザー名くらいでしょうから、それだけを別テーブルに切り出すのが現実的でしょう。処理も軽くなるはずです。 ただしパスワードはハッシュ化しておくべきです。そうすれば万一の際にもユーザーIDとユーザー名、およびハッシュ化されていて使えないパスワードの漏洩だけで済みます。 もっともSQLインジェクション対策としてはプログラム側で入力値をエスケープする処理を入れるのが普通なので、それが完全であれば必ずしもテーブルを分けなくても構いません。どこまで万一の脆弱性に備えるかというトレードオフになるでしょう。

関連するQ&A