質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

3回答

1493閲覧

データベースの管理

ryohasegawa

総合スコア437

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

2グッド

1クリップ

投稿2016/12/24 17:46

データベースを勉強していて、ふと思ったのですが、大抵のデータベースには、
・メール
・ID(アカウント名)
・パスワード
・性別
・年齢
などあると思うのですが、同じデータベースで、IDとパスワードを両方保管するのは危険では?と思いました。素人なので全くわからないのですが、もしセキュリティーホールなどから、データベースを持っていかれたときに、IDとパスワードは別の場所に保管すべきでは?と思いました。
実際はどうなのでしょうか?

stereo_code, zico_teratail👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

公式ドキュメント
安全なパスワードハッシュ

投稿2016/12/24 17:58

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryohasegawa

2016/12/24 18:00

なるほどです。ハッシュというものを初めて知ったのですが、ハッシュをつければ、最低限安全にパスワードを保管することができるのですか。 素早い回答ありがとうございます。
guest

0

長くなりましたので結論から先に書きます。

そもそも漏れた時点で企業の信頼はもうだめです。
セキュリティーホールを潰すための業者や専門家がいます。
システムを公開する前に業者に頼んで入念に調査してもらいましょう。


もしセキュリティーホールなどから、データベースを持っていかれたときに、IDとパスワードは別の場所に保管すべきでは?

どうやってそのシステムにログインするのですか?
認証ページでログインボタンが押される度に、私に席から金庫まで歩いてパスワードの情報を取り出して目視で確認しろと?したくないですよ?

…というわけで、
いくら情報を分散させたとしてもIDやパスワードはサーバーからアクセス出来る比較的近い位置に保管するしかありません。
そしてシステムへログインすれば顧客の情報、メールアドレスや住所等の一覧が表示されるページに移動出来ますよね?
その時点でWebサーバーはID・パスワード・メールアドレスの詰まった金庫にすぐさまアクセスできるわけです。

このように、いくら物理的に情報を分散させても論理的には情報は1箇所に集まっており、芋づる式にデータを抜き出せます。
データの持って行かれ方次第ではどんな対策を施しても無駄です。

ハッシュ化すれば解決?

ハッシュ化の目的は単なる時間稼ぎです。
レインボーテーブルと呼ばれるよく使われるパスワードとハッシュコード一覧を使って一気に解読するテクニックがあります。

セキュリティホールで全顧客データが抜かれている場合、
ログイン認証まわりのソースコードも一緒に持っていかれてる可能性があり、
その場合はソルトがあろうがどんな強固なハッシュアルゴリズムであろうがもうダメです。

アタッカーの勝利条件は抜き出したn万件のユーザーの情報を全て抜きだすことではなく、
password123みたいなしょぼいパスワードを登録している数十人のログイン情報を抜き出せれば十分だからです。

そもそもハッシュ化で企業の信頼は守れるの?

そもそもパスワードを復号化する必要なんてどこにもありません。
メールアドレス、氏名、性別、年齢、住所、クレカ情報…これらの情報はデータベース内にそのまま残っているからです。

例えばクレカ情報を抜き出してアタッカーが作った架空のシステムに課金で攻撃成功というわけですね。
そもそも生きているメールアドレスがあれば闇業者に名簿ごと売り払ってしまえば1ユーザー1円みたいな感じでお金もらえます。

「◯◯のシステムを利用した瞬間、アダルト広告や銀行のフィッシングメールやらが届くようになった」という噂が流れてくるようになって、そのシステム使いたいと思いますか?

それ、どうしようもなくない?

そうです、漏れたら基本的にどうしようもありません。
即座にサービスを止め、対策を施してユーザーのログイン情報を無効にしつつ通知するくらいしか手段はありません。

なのでそもそもセキュリティーホールがないように細心の注意を払うわけです。
大規模なシステムの場合、必ず専門家に頼んで調査してもらいます。

一例として、検索したらセキュリティー関係の企業がヒットしたので共有します。
HASHコンサルティング株式会社

そもそもどんなケースで情報漏えいって発生してるの?

第一回 原因の約80%は内側にアリ
実は、大半の事件はバイト君や平の人間が小金欲しさに名簿を売り払ったのが原因です。

そもそもそんな情報下っ端に見せんなって話で、
触る人間を限定して管理するだけでほとんどの情報漏えいは防げます。

なんと、こんな解決策もあった!?

リスクを抑える事が目的なら個人情報など持たないのが一番です。

世の中OAuthという認証システムがあります。
Teratailにもありますね、一度TwitterやFacebookのログインページを通過してログイン情報を持たせてまた戻ってくるあれです。
あれを使えば、顧客情報としてメールアドレスを持つ必要はありません。

課金周りはどうすんねん?
その情報もOAuth的に受け持ってくれるサービスは沢山あります。
Amazonログイン&ペイメントPayPalなどが有名ですかね?
はい、これでクレカ情報も持たずに済んだ。

住所・年齢・性別?そもそもどこで使うの?保存する必要なくね?
このように漏れてやばい情報を削っていけばノーリスクで運用することも不可能ではありません。

まとめ

企業としては個人情報は出来るだけほしいところです。
新しいプロモーションを打って、サービスを利用して頂いて利益を上げるところが目的になります。
なのでほぼ全ての経営者は(リスクなく個人情報が得られるなら)個人情報はいくらでも欲しいわけですね。

ただし、個人情報は悪い意味でもいくらでも金になります。
保存するなら相応のコストを支払って漏れないように尽力するのは当然の義務です。
金にする使い方が思いつかないのに保存するだなんて愚か者のやることです。

何を保存するか、何は保存しないか…企業によって注目する点は違うと思いますので、
コストと上手く折り合いをつける事が重要です。

投稿2016/12/25 02:16

編集2016/12/25 02:23
miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miyabi-sun

2016/12/25 08:53

上記の回答はわかりやすさを優先したので、いくつか穴があります。 > IDとパスワードを両方保管するのは危険では? おっしゃるように危険です。 確かに質問文のようなアイデアでWebサーバーの権利を減らして分散して管理する案は沢山出ています。 ハッシュ化は質問者さんの不安に思うパスワードを抜かれて困るという面をある程度カバーした回答ではありますが、ハッシュ化してあるからもう安全だとはならないという警報を含んでいます。
ryohasegawa

2016/12/25 12:37

詳しく説明ありがとうございます。
guest

0

Kosuke_Shibuyaさんが提示されております、
パスワードをアプリケーション側でハッシュ暗号化する手法もあれば、
DBMS側の**透過的暗号化技術(TDE)**を利用する手法もあります。
(後者は全てのDBMSで実装されているものではないですが・・・)

データベース暗号化についてはWEBサービスにおけるDBの暗号化についてのQA、
加えて暗号化すべき情報とは?のQAにて、
回答者の方々が有益な情報を回答しております。

是非勉強の一環として参照してみることをお勧めいたします

投稿2016/12/24 19:19

Panzer_vor

総合スコア1636

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ryohasegawa

2016/12/24 19:20

回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問