Back

[CLOSED] Appwrite Data Security Issue

  • 0
  • Android
safwan
12 Aug, 2023, 11:08

Another thing to mention is that just because you are using Appwrite, doesn't mean a user will know you are using Appwrite. Sure they can keep track of the requests being sent, but that's a very rare case and usually only happens if you're storing super sensitive data that could be very expensive if grabbed by a threat actor.

Just because someone creates a local app with your package name, doesn't mean they know how your database is structured, or how your files are stored and linked. That is the information you need to make sure is concealed.

TL;DR
There were discussions about data security issues related to Appwrite. Some points raised included the potential for open access, data integrity concerns, and the need for permission-based access. It was mentioned that Appwrite does not currently support common integrity checks. However, there are other guards in place, such as rate limiting. It was also discussed that hosting the app locally and pointing it to 127.0.0.1 could potentially bypass HTTPS requirements. Regarding production readiness, it was mentioned that it will be fully ready when the cloud ends beta. Users were also discussing the availability of the $15 Appwrite plan and the use of dual collections for
D5
12 Aug, 2023, 11:09

How are you paying for something it's not possible to pay?

safwan
12 Aug, 2023, 11:11

I'm guessing he's planned his financials in a way that when pricing is implemented, he'll use the 15$ plan

safwan
12 Aug, 2023, 11:11

Or maybe he's gotten in touch with someone and already has access to the paid version πŸ‘€ 😲

D5
12 Aug, 2023, 11:12

I see. For a paywall he could make what you said, set permissions to not allow access, not sure what to fear

safwan
12 Aug, 2023, 11:13

yep. before i implemented the dual collections, I had just one collection and used Appwrite Functions to return appropriate data

safwan
12 Aug, 2023, 11:14

So I wouldn't call the database.getDocument from client. I would just run createExecution that checked if a user has the authorization to view certain docs

D5
12 Aug, 2023, 11:14

Probably It's not even needed having a dual collection, just permissions and a team

D5
12 Aug, 2023, 11:14

But both methods work, so it's the same

safwan
12 Aug, 2023, 11:15

I agree, it's just that I was very very new to Appwrite at the time and just did what I understood lmao

Shubham
12 Aug, 2023, 11:24

i am using 7$ digital ocean and 5$ digital ocean space , and now planned to move to appwrite 15$ plan

Shubham
12 Aug, 2023, 12:13

from when we can use 15$ appwrite plan?

D5
12 Aug, 2023, 12:19

When cloud ends beta

Shubham
12 Aug, 2023, 12:33

when can i expect , my app is fully ready for production

Nevus
13 Aug, 2023, 16:44

If all users of your app can save and delete app from your databases, why do you want to restrict users that are not from your app? I get why you might need public read access but restrict reads only from your app but for updates and deletes, appwrite permissions should solve your problem.

Nevus
13 Aug, 2023, 16:48

Not necessarily I can create my own app, host it locally and point example.com to 127.0.0.1 As far as I know appwrite doesn't require https and therefore has no way of knowing that its a localhost app.

D5
13 Aug, 2023, 16:58

That's what we have said and discussed, but ended creating this other post:

Binyamin
13 Aug, 2023, 16:58

There are few aspects in that matter.

Open access If for example you've a database that have permission of any then anyone can create app and spoof as they are you. But, they won't need to go so far as they can do it using any API explorer like Postman.

Data integrity This is not a security concern per-say but more a data integrity one, to avoid that there are few common solutions

  • CORS - for web - blocking access to specific URLs only.
  • Package name - for Android and iOS - validating the origin of the package.

The first one CORS is pretty hard to overcome in web browsers, but in mobile there a quick workaround to get over all of that and that is by contacting the API endpoint directly.

So, for example instead of using the appwrite package for flutter projects the spoofer can use the http library and make direct calls to the REST API. In that way Appwrite won't be able to know where the request came from.

That's true for any BaaS out there including Firebase.

To mitigate this issue Apple created DeviceCheck and Android created Play integrity and to use them in Firebase for example you can use the https://firebase.google.com/docs/app-check solution, as it ain't easy to provide out-of-the-box solution for that.

As of now Appwrite doesn't support any of the common integrity checks out there but you can track the issues regarding that matter.

Permissionized Any one can use packet analyzer apps like Wireshark to get hold of all the API requests, and as such all web-apps out there using the network tab.

Becuase of that, in general when passing data on the web you should use on of these two approaches

  • Allow to all
  • Allow by permission

When you're allowing data by permission, then it may be inconveniente when someone uses mocking your app package to get access, but that will help only passing the first barrier nothing more.

Package name and CORS protection in Appwrite mainly meant to be used as general guards and not protecting against attacks, etc. as for that Appwrite has many other code logic guards like the rate limiter

safwan
13 Aug, 2023, 17:05

Appwrite does require https though, right?

safwan
13 Aug, 2023, 17:05

Correct me if I'm wrong obviously, but https, at least on cloud is enabled

safwan
13 Aug, 2023, 17:05

On self-hosted, that depends on the setup

Nevus
13 Aug, 2023, 17:09

Ahh I think it is. I didn't know because it is not needed in localhost and everything I host is in netlify so automatic https so ig I just never noticed πŸ˜…

safwan
13 Aug, 2023, 17:58

Hahaha that happened to me as well LMAO

safwan
15 Aug, 2023, 18:36

[CLOSED] Appwrite Data Security Issue

Reply

Reply to this thread by joining our Discord

Reply on Discord

Need support?

Join our Discord

Get community support by joining our Discord server.

Join Discord

Get premium support

Join Appwrite Pro and get email support from our team.

Learn more