2

Firebase でセキュリティ ルールを作成して、PHP スクリプト (CURL リクエスト経由) のみが場所に書き込むことを許可したいと考えています。

URL に .json?auth=MYAPPTOKEN を追加することで、セキュリティ ルールが認証を持つすべてのユーザーに読み取り/書き込みを許可する場合、PHP スクリプトを使用して Firebase に読み取り/書き込みを行うことができます。

また、Simple Login を使用して場所への読み取り/書き込みからユーザーを含めたり除外したりすることもできるので、セキュリティ ルールの構文/操作に関する基本的なハンドルは持っていると思います。

ここで、PHP ファイルからのみ書き込み可能な Firebase の場所が必要です。

私が試したセキュリティルール:

".write":"auth.secret == "MYTOKEN",
".write":"auth == "MYTOKEN",
".write":"auth.token == "MYTOKEN",

反対側では、リクエストの .json?auth= を変更してみました。これが私が試したことです:

$auth = array("token" => "MYTOKEN");
$auth = json_encode($auth);

2 回目の試行:

$auth = json_encode("MYTOKEN");

そして、.json?auth=MYTOKEN を .json?auth=$auth に置き換えます。

では、そのスクリプトだけが特定の場所に書き込めるようにするにはどうすればよいでしょうか?

みんなありがとう。

4

1 に答える 1

4

基本的な原則は、基本的にキャプチャしたと思う、書き込みを許可する PHP スクリプトの認証資格情報のみを与えることです。

MYTOKEN が Firebase シークレットを表している場合 (おそらくこれを使用しないでください)、セキュリティ ルールはバイパスされます。これは、このトークンが admin: true を内部的に設定するためです。

したがって、セキュリティ ルールを に設定するだけで".read": false, ".write": false、管理者トークンを使用していない人はアクセスできなくなります。

自分でトークンを生成している場合(この場合はおそらく生成する必要があります) isMyPhpScript: true、セキュリティ ルールから参照できる などの変数をトークンに追加するだけです。

何年も先の日付を使用して有効期限のないトークンをシミュレートできるため、シークレットと同じように機能しますが、セキュリティ制限を適用することもできます。

var FirebaseTokenGenerator = require("firebase-token-generator");
var tokenGenerator = new FirebaseTokenGenerator(YOUR_FIREBASE_SECRET);
var veryFarInFuture = Date.now() + 8e+14;
var token = tokenGenerator.createToken({ isMyPhpScript: true }, { expires: veryFarInFuture });

これで、ルールに次のように記述できます。

".read": "auth.isMyPhpScript === true"

スクリプトを記述せずにカスタム トークンをすばやく作成する場合は、私が作成したこのフィドルを使用して、独自の調整を行うことができます。

于 2014-01-19T18:33:28.023 に答える