2016-03-28 12 views
5

ファイアベースをバックエンドとして使用することに関連するセキュリティ上の考慮を理解したり、予測したりしようとしています。ファイアベースでのjavascriptインジェクション攻撃のリスク

ドキュメントには、ユーザーの認証と入力の検証が含まれていますが、悪意のあるユーザーがデータベースにJavaScriptを注入しようとすると、リスクに関する説明はありません。

データベースに保存された入力フィールドにJavaScriptが含まれていて、後でそのコードを取得して他の場所に表示すると実行される可能性はありますか?

火災基地は何とかデータをエスケープまたはサニタイズしていますか?

+3

http://blog.diniscruz.com/2014/02/xss-considerations-when-developing-with.html –

+0

firebaseは高速だったので良いjsonデータベースですが、私は好きではありません(データベースのオプション)。機密情報/情報になります。セキュリティ上の理由(特に入力上のjavascriptなど)のために、入力を厳密に浄化する必要があります。 –

答えて

3

バックエンドに関係なく、Webページに入力する際に​​、すべてのユーザー入力を適切にエスケープする必要があります。

+0

問題はFirebaseが問題となっているのは、衛生状態がクライアント側で行われ、簡単に上書きされるため、入力が消されることを保証できないということです。 –

+0

admin-sdkを使用すると、データベースに挿入する前にサーバー側をサニタイズするfirebase関数を構築できます。 –

8

任意のデータベース(または他のストレージシステム)は、機能に固有のように悪質なコードを格納するために使用できます。つまり、データを格納するだけです。

Firebird SDKとサポートされているライブラリ(AngularFire、EmberFire、ReactFireなど)は、エスケープされていないHTMLページにデータベースからの情報を埋め込まないようにします。私たち(私はFirebaseのために働いています)がそこに何かを見逃している可能性はありますが、私はこれまで報告されたことを思い出しません。

+3

返信いただきありがとうございます。私は答えが正しかったと思っていましたが、Firebaseのドキュメンテーションでこれについての議論がなければ、私は残念です。問題を避けるためにデータを墨塗りするための責任(データベース対SDK)とユーザーが念頭に置いておく必要があることについての説明をドキュメンテーションに含めることは本当に役に立ちます。 –

+1

私は議論の明確な欠如があるということには同意するでしょう。 Firebaseはこれを明示する必要があります。これは、クライアントベースのデータベースの主要な問題です。データベースに挿入されているデータの消去を保証することはできません(データベースのルールで可能な場合を除く)。私たちはすべてのデータの出力をサニタイズする必要があると思います。 –

+0

はいこの回答の問題はfirebaseを単にデータベースやストレージシステムとして記述していることですが、Firebaseがそれ自体をバックエンドとして販売していることを理解しています。私にとって、バックエンドは単なるデータベース以上のものであり、セキュリティに対処する必要があります。 –

0

Firebaseはデータの検証を提供していますので、データベースにJavaScriptのスニペットを挿入することができます。

https://firebase.google.com/docs/database/security/securing-data#validating_data

そして、あなたは常にあなたの出力をサニタイズする必要があり、これはFirebaseに関連していないですが、親指の良いルール。

関連する問題