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

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

ただいまの
回答率

92.07%

  • MySQL

    3038questions

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

  • SQL

    1123questions

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

  • データベース

    384questions

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

  • SQLite

    284questions

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

データベースの管理

解決済

回答 3

投稿 2016/12/25 02:46

  • 評価
  • クリップ 1
  • VIEW 194

ryohasegawa

score 34

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

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

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

    クリップした質問はマイページの「クリップ」タブからいつでも見ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+4

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

投稿 2016/12/25 02:58

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    以下のような回答は評価を下げられます

    • 間違っている回答
    • 質問の回答になっていない投稿
    • 不快な投稿

    評価を下げる際はその理由をコメントに書き込んでください。

  • 2016/12/25 03:00

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

    キャンセル

+3

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

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


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

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

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

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

ハッシュ化すれば解決?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

まとめ

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

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

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

投稿 2016/12/25 11:16

編集 2016/12/25 11:23

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    以下のような回答は評価を下げられます

    • 間違っている回答
    • 質問の回答になっていない投稿
    • 不快な投稿

    評価を下げる際はその理由をコメントに書き込んでください。

  • 2016/12/25 17:53

    上記の回答はわかりやすさを優先したので、いくつか穴があります。

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

    キャンセル

  • 2016/12/25 21:37

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

    キャンセル

0

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

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

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

投稿 2016/12/25 04:19

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    以下のような回答は評価を下げられます

    • 間違っている回答
    • 質問の回答になっていない投稿
    • 不快な投稿

    評価を下げる際はその理由をコメントに書き込んでください。

  • 2016/12/25 04:20

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

    キャンセル

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

ただいまの回答率

92.07%

関連した質問

  • 解決済

    データベース接続時に起こるエラーについて

    ・上記ユーザー登録の入力画面にて  ニックネーム、パスワード、メールアドレスのデータを入力後、  「アカウント作成」のボタンを押すと下記のような画面になりエラーになってしまいます

  • 解決済

    mysqlの管理パスワード設定について

    今までphpmyadminでデータベースを操作してきましたが、勉強を兼ねてphpmyadminを使わずmysqlのみで操作することになったのです。 しかし初っ端から躓いてしまいま

  • 受付中

    MySQLとOracleのSQLを構築する際の接続文字列の確認方法が分かりません

    MySQLとOracleのデータベースをEclipse上で設定しようと思っているのですが、接続文字列の確認方法が分かりません。IPやポート番号、DB名などが必要なようで、DB名は自

  • 解決済

    MySQLについて

    MySQLで拡張子.sqlのファイルを読みこむにはどうすればよいでしょうか。 macbookを使用してます。

同じタグがついた質問を見る

  • MySQL

    3038questions

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

  • SQL

    1123questions

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

  • データベース

    384questions

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

  • SQLite

    284questions

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

閲覧数の多いMySQLの質問