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

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

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

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

4回答

846閲覧

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

bws

総合スコア98

MySQL

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/02/02 09:09

編集2019/02/02 09:10

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

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

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

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

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

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

guest

回答4

0

ベストアンサー

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

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

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

投稿2019/02/02 11:13

raccy

総合スコア21733

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

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

bws

2019/02/04 02:52

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

0

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

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

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

ちなみに

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

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

投稿2019/02/02 09:21

編集2019/02/02 09:23
m.ts10806

総合スコア80765

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

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

bws

2019/02/02 09:33

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

2019/02/02 09:53

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

2019/02/02 10:07 編集

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

2019/02/04 02:45

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

0

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

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

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

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

投稿2019/02/02 10:41

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

bws

2019/02/04 02:39

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

0

厳密なことを考えると、

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

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

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

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

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

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

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

投稿2019/02/02 10:39

tanat

総合スコア18709

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

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

退会済みユーザー

退会済みユーザー

2019/02/02 11:16

厳密なことを言うとネットワークをバカハブで構成しておけば見たい放題だからw クロスケーブルによるダイレクト接続でもLANケーブルの電圧差で見れる
tanat

2019/02/02 11:22

そこも考えるなら、P2P間も暗号化通信させてあげればOKかも?w 利用開始までの手続きが金融決済系のアプリより面倒くさそう
m.ts10806

2019/02/02 11:55

やっぱり「開発者が覗き見」って表現に違和感が… 業務経験者とそうでない人との違いですかね…
退会済みユーザー

退会済みユーザー

2019/02/02 12:00

Twitter APIの再登録よりは大丈夫だろうと信じたい。 ※ 継続登録アカウント → レスポンス悪で30日前後 ※ 新規登録アカウント → 自動登録で即日利用開始
tanat

2019/02/02 12:18

mts10806さん 個人的にはte2jiさんの回答や、LINE等の最近のメッセージの仕様を前提にした場合、覗き見出来てしまうという感覚と表現はそこまで違和感は無いです。 一方で、実装と運用コストを考えると、システム管理者の居るサービスなのでシステム管理者は全情報にアクセス出来て当然という前提で作るのが合理的なケースが圧倒的に多いとも思うので、業務経験有無に加えて、アプリ経験のスタートラインが感覚の違いになるのかなと思います。
m.ts10806

2019/02/02 12:20

なるほど。了解です。私もちょっと一方向の考え方になっていました。
退会済みユーザー

退会済みユーザー

2019/02/02 12:29

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

2019/02/04 02:41

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問