Q:

Isn’t it possible for anyone to manipulate my Firebase Database? 

Just wondering…
Since the initialization of Firebase is public in a script tag:
<script>
  // Initialize Firebase
  var config = {
    apiKey: "key",
    authDomain: "domain",
    databaseURL: "url",
    storageBucket: "bucket",
    messagingSenderId: "id"
  };
  firebase.initializeApp(config);
</script>

isn’t it theoretically possible, with this information, anyone to manipulate the database? 

A:

It depends on how you set the permissions (realtime database rules language) of read and write data to a node in firebase database. 
Sample Application Scenario :

Firebase Database Rules Design: 

Suppose a node (aka "parent") in which every user has the permission to create a child after auth. 
{
  "rules": {
    "parent":
        ".read": true,
        ".write": "auth ! = null"
  }
}

Firebase Database operations:

User 2 "push" data via "push()" and create a new child node (randomIdforchild2). 
parent
|--randomIdforchild2
   |--resetparentData: false
   |--addData: true

User 3 "push" some data via "push(), resulting in a new child node (randomIdforchild3). 
parent
|--randomIdforchild2
|  |--resetparentData: false
|  |--addData: true
|--randomIdforchild3
   |--resetparentData: false
   |--addData: true

User 1 is adding data to parent node via "set()".  This will reset parent node. 
parent
|--childNodeNameByUser1
   |--resetparentData: true
   |--addData: true

For this particular scenario, you should rethink your data structure and node access permissions (firebase database security rules). 
Due to the permission that every user have, an exploring developer "User 1" can actually issue "set()" request in place of "push()" which overwrites previous data. Here you need to restructure your data model. 
It may vary in your case. 
Hope this makes you clear. 
Reference:  Understand Firebase Realtime Database Rules

