Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Firestoreで超簡易なパスワード管理をしたい

FirebaseのFirestorea辺りで簡易なパスワード管理をしたい

オンラインで世界中の人とじゃんけんをするというくっそくだらないサイトを作ってます.
VueCli,Vuetify,Firebaseの練習がてらという感じです.

で,

ユーザは各自で部屋を作成して対戦相手を募集するのですが,部屋に入室パスワードをかけたいです.
お遊びなのでバックエンドは全く書きたくないです.
RDBとか使いたくないし,FirebaseのFunctionsも無しでいきたいです.
とはいえFirestoreにパスワードが直に置いてあってそのまま変数で照合するのもちょっと負けた気がします.

完璧なセキュリティとかは全然全く求めてませんが,
何かちょっとしたいいアイディア無いですか?

ご意見お待ちしております.

環境

Vue Cli
Vuetify
Vue Router
Firebase Firestore
Firebase Authentication

調べたこと?

Functionsあれば下のような記事はいくつかあります.
『firestoreのセキュリティルールでグループチャットルームを考察』
https://sndbox.jp/websystem-develop/firebase/firestore%E3%81%AE%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E3%83%AB%E3%83%BC%E3%83%AB%E3%81%A7%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%83%81%E3%83%A3%E3%83%83%E3%83%88%E3%83%AB%E3%83%BC

追伸

Firestoreならパスワードよりも承認制にしたら良い気がしてきた,,,
その方が確実で楽

0

1Answer

追伸の通りだとは思いますが、ジャンケンというお遊び程度でしたら、以下のような仕組みはどうでしょうか?

/rooms/{room_id}/password/{password}

みたいな、roomsのサブコレクションであるpasswordを作って、そのpasswordのdocument idをパスワードのハッシュにしてしまえば、良いのではないでしょうか?

でセキュリティルール的には
passwordはgetのみ許可し、listを不許可にすれば、秘匿しながらパスワードの管理もできるのではないかと思います。

そして、passwordのドキュメントがgetできた人には、ルームに参加できるようなコードを実行すれば良いと思います。ただ、フロントだけでその制御をすると、ルームに参加できるようなコードを開発者ツールとかから実行されると、結局一緒な気もします。(が、お遊びなら全然問題ないでしょう。

追伸

一応書いておきますが、パスワードをパスワードとして管理する場合、漏洩のこととかを考えると、パスワードをハッシュ関数にかけるだけでは、不十分です。詳しくはレインボーテーブル等で調べてください。

ハッシュ化+ソルト+ストレッチング等で対策してください。
自分で実装するのは危険なので、bcrypt等のライブラリを使ってください。

0Like

Your answer might help someone💌