質問: 現在、ウェブサイトを作成中でありまして、 日々勉強中の身です。宜しくお願いします。 現在作成中のウェブサイトにデータを検索できるシステムを 作成しました。 例えばデータ1つ1つに、商品名(データベースカラム名:goods_name)を 保持しており、商品検索ページで商品名を検索できる形なのですが、 商品検索ページで、商品名を入れるテキストエリアを下記とした場合、 例えば、ソースを第3者に見られた場合、商品名はデータベースに goods_nameで登録されている、というのが、わかりえてしまいます。 恐らく、セキュリティ的に問題かと思うのですが、 どういう影響があり、問題でしょうか? また、上記にかかわらず色々なページでデータベースのカラム名が わかってしまうような形で作成してしまい、 手直しすると色々と不具合が生じるので、どうしたらよいものか悩んでおります。 例:商品Noをgoods_noで登録しているのですが、商品詳細ページの URLは/detail/page.php?goods_no=100 などで表示するようになっています。 すべてを手直しせず、セキュリティ的にもクリアできる、 方法がありましたら、教えてください。 ※ちなみに上記のウェブサイトは会員制になっており、 IDパスでログインして閲覧するような仕様です。 ※そもそも、上記の仕様でなぜセキュリティ的に問題なのか、 いまいち理解できず、教えて頂けますと非常にうれしいです。 宜しくお願いします。
回答: たしかに、「わからないほうがいいか」と言われれば答えは「そのほうがいい」ですが、はっきり言って優先度はそんなに高くありません。 というのも、カラム名がわかったところで**DBサーバに侵入されなければ**どうということもないわけですし、DBサーバへの侵入経路があれば、列名がわかろうがわかるまいが大問題です。 とりわけ、フレームワークによっては、DBの列名―モデルの属性名―フォームのnameが自動で同じとなるように生成するものがあって、そこまで変えるとなればかなりコストが嵩むかもしれません。