クライアントサイドのロジックが非常に多いため、悪意のあるユーザーはブラウザを使用してコンソールを使用してfirebaseアプリケーションを偽装、無効化、ゲームすることができます。firebaseのWebアプリケーションでクライアントサイドのコンソールハッキングをどうやって防ぐのですか?
たとえば、私は$( "。flag")。click()を入力することができます。
私が書いた防衛ロジックは、誰でもそれを解読したい人にも利用可能です。
どのように対処しましたか?回避策はありますか?
クライアントサイドのロジックが非常に多いため、悪意のあるユーザーはブラウザを使用してコンソールを使用してfirebaseアプリケーションを偽装、無効化、ゲームすることができます。firebaseのWebアプリケーションでクライアントサイドのコンソールハッキングをどうやって防ぐのですか?
たとえば、私は$( "。flag")。click()を入力することができます。
私が書いた防衛ロジックは、誰でもそれを解読したい人にも利用可能です。
どのように対処しましたか?回避策はありますか?
実際、Firebaseはセキュリティに関する他のサーバプロセスと変わりません。誰でもJavaScriptコンソールを任意のサイトで開いたり、独自のHTMLページを作成したり、コマンドラインからcurlを実行したりして、データを操作できます。
ファイアベースは、直接的ではあるが驚くほど強力なクライアントを適度に調整します。security rules。それらを認証スキーマと組み合わせると、アクセスを制限し、着信データを最小限の手間で検証することができます。
{
"rules": {
// widgetName must be a string
"widgetName: { ".validate": "newData.isString()" },
// user accounts can only be read by the authenticated client
"users": {
"$user_id": {
".read": "$user_id === auth.id"
}
}
}
}
興味深いコメントと回答。私は最近セキュリティルールを掘り下げ、あなたが指していると思うところを見ています。 validate式はauthの一致などをチェックするだけではありません。それは、タイムスタンプの違いや私が思い付く他の比較をチェックすることができます。例えば、500ms以下のタイムスタンプを持つ同じユーザ。 通常どおり、何かを水密にするには多くのタールが必要です。 – Itumac
次の例のシナリオが起こるかどうか疑問に思う: 私はブログを持っており、すべてのページに認証されたユーザーのための10の投稿を提示しているとしよう。 認証されたユーザーがURL http://mydb.firebase.com/postsにアクセスすると、200件の現在の投稿がすべて表示されますか? 私は好きではないビューノードにアクセスできますか?投稿を「好き」したユーザーのように はいの場合は、どうすればURLへのアクセスを防止できますか? – user2399432
Firebaseのルールは、実際には新しいWeb構築アプローチです。あなたは、そのルールを使ってあらゆる種類のWebアプリケーションを構築することができます。 ルールコードはここには載せませんが、私が意味することを説明します。 たとえば、あなたは学習アプリを作りたいと思っています。ルールを使用して、ユーザーに対して2つまたは3つのロールを作成できます。次に、各コンテンツについて、フィールド(配列など)を入れて、認証後のリクエスタユーザーが一部のコンテンツにアクセスする役割を持っている場合は、各リクエストを確認することができます。 私は今、この方法ですべてのCMSが動作していると思います。
希望すると、これでFirebaseプラットフォームに関するアイディアが増えます。
人がコンソールを使用するのを防ぐことはできません。サーバー側を使用します。 – Dom
指定されたユーザーからのフラグ/更新の数を、ある絶対的な制限、またはある制限/分に制限します。クッキー、ブラウザID、IPアドレス、またはあなたが気にするユーザーIDを使用して検出します。 – ChuckCottrill
Firebaseセキュリティルールは、ユーザーが触れたくないデータを変更できないようにすることができます:https://www.firebase.com/docs/security-quickstart.html – Anant