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

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

ただいまの
回答率

87.60%

グループチャットのメッセージをDBに保存する方法

解決済

回答 4

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,776

score 76

簡単なグループチャットを作ろうと思ったのですが、メッセージをそのままDBに保存してしまうと、DBにアクセスできる自分はみんなのメッセージを見ることが出来てしまいます。
開発者もメッセージの内容がわからないように作ることは可能なのでしょうか?よろしくお願いします。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 4

checkベストアンサー

+3

エンドツーエンド暗号化という手法を用いればサーバーやDBの管理者が閲覧できない仕組みが作れます。すでにいくつか実装が存在しているようです。

【注意】
これらのソフトで一番の問題になるのはクライアントソフトが信用できるかどうかです。クライアントソフトの開発者は平文のデータを秘密のサーバーにこっそり送るといったバックドアを仕込むことが可能※です。開発者にもサーバー管理者にも絶対にバレない、絶対安全と謳うのであれば、クライアントソフトはオープンソースで提供し、第三者によってそのようなコードが仕込まれないことを確認できる状態で無ければ難しいでしょう。

※ 技術的には可能であっても法的には問題があります。日本で行えば「不正指令電磁的記録作成罪(いわゆるウィルス作成罪)」に問われる可能性が高いです。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/02/04 11:52

    出来ないこともないんですね!とても勉強になりました、ありがとうございます!

    キャンセル

+2

グループチャットということはテーマごとにルームを作るようなイメージでしょうか。
ルームIDを同じレコードに保存してそのルームに入ったときだけそのルームIDでメッセージを取得するようにすればルームに入った人しか確認できません。

が、
「開発者」って実際にそのシステムを作る人ですよね?
DBへのアクセスができないと作れませんのでそれは現実的ではないと思いますが。

そもそも私も「ルームつくる」を憶測でつけてるので「関係者しか見れない仕様で設計する」しかないのでは?

ちなみに

DBにアクセスできる自分はみんなのメッセージを見ることが出来てしまいます。

システムにアクセスする人はDBに直接アクセスできるものではありません。(普通できないように作ります)
なので、「開発者も見れない」を除けば作る側の都合で如何様にもできます。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/02/02 18:33

    自分がグループチャットを開発して、身内で使おうとなった場合「関係者しか見れない仕様」で作ったとしても開発者の自分はDBを直接見たらすべてのメッセージを覗き見できてしまうのが問題だなと思ったのですが、よくあるチャットアプリやなんかは開発者はみんなメッセージを見れてしまう仕様なんでしょうか?

    キャンセル

  • 2019/02/02 18:53

    開発者とは を考えてください。
    もちろん「覗き見」をするような人が良い開発者とは言えませんけど、何かあったときにデータを確認できる人は必要ですよね。
    会話ログや情報を解析できる人が。
    有事には全ての情報を見れる存在は必須です。

    キャンセル

  • 2019/02/02 19:00 編集

    かなり勘違いが過ぎるように思います。
    「開発者が見れてしまう仕様」という表現は意味がわからないですね。
    DBにアクセスする処理を作るのは開発者ですよね。
    例えリリース後にその開発者以外がDBのパスワードをかえたとして、そのパスワードをかえた人はDBを直接参照できますよね。
    では、システムに改修が入るとき、開発者が見れないっておかしくないですか?
    まあ、顧客におさめるシステムならDBパスワードは環境変数的な扱いにするにしろ、その顧客は見れるわけですし、問題があったときにはデータを「預かって」解析することもあるのでいずれにしろデータを確認するシーンは必ずあります。
    開発者は何のためにいるのかという役割を考えてください。システムを作るためであり覗き見するためではありません。
    守秘義務無視する開発者とか開発者ではないですよ。
    というか、見られてまずい(または問題のある)コメントやりとりする利用者の方がモラルがないと思います。

    キャンセル

  • 2019/02/04 11:45

    身内で使おうと考えていましたので、知らなくて良かったことを知ってしまった!みたいなことを防ぎたいなと思ったのです。かなり難しいということがわかりました、ありがとうございます!

    キャンセル

+1

厳密なことを考えると、

− P2Pで通信させてメッセージがサーバを通過しない様にする

  • サーバ側にはクラアントサイドで暗号化したデータ記録し、複合はクラアントサイドでのみ行える様にする

と言った実装が必要になります。

が、webアプリでこれを行うのはなかなか大変で難易度が高いですし、問題発生時でもシステム管理者がサポート出来ない状態になりますし、クラアント側に発生する制限事項も色々あります。

そのあたりを実装者が十分に把握出来ないうちは

  • システム管理者はやろうと思えば会話を覗き見ることが出来る事を理解した上でグループチャットを使ってね

と言う規約にするのが現実的なラインでしょうね。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/02/02 21:20

    なるほど。了解です。私もちょっと一方向の考え方になっていました。

    キャンセル

  • 2019/02/02 21:29

    ぶっちゃけ、グーグルでさえ、policyにしかしてないからな。

    キャンセル

  • 2019/02/04 11:41

    かなり大変ということがわかりました!大人しく既存のサービスを使おうと思えました。ありがとうございます!

    キャンセル

+1

あぁ、すげぇわかるわw
身内のメッセンジャーアプリの場合、管理者として監視できないと困るけど、個人としてはカジュアルに覗けても困るんだよねぇ。。。

検索性能がだだ下がりですが、openssl_encryptあたりで軽く暗号化してやれば、カジュアルな覗き見は「自己抑止」できます!

当然、decode すれば読めるので、あとはどんな条件の時暗号化を解除してやるかですけど悩ましいねぇ^^;

参考:
暗号化すべき情報とは?

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/02/04 11:39

    軽い暗号化をするだけでも知らなくて良かったことを知ってしまった!みたなことが防げそうですね。ありがとうございます!

    キャンセル

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

  • ただいまの回答率 87.60%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

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