Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Hi, lead developer of Sandstorm here.

> That's just marketing bullshit.

No, it isn't.

> Unless the API is magic (and I don't mean advanced technology "magic" but Harry Potter "magic") it has no way of knowing what the application is allowed to send or not and therefor cannot filter.

You're assuming that Sandstorm apps have arbitrary IP network access. They do not.

Sandstorm is based on capability-based security. Any outgoing request has to be addressed to a capability representing some specific permission that the user has granted to the app. A capability might point to another app, or it might point to a specific external host that the user has designated.

More specifically, a Sandstorm app's only connection to the outside world is through Cap'n Proto RPC, which is an object-capability protocol, meaning that an app can only send requests to objects to which it has explicitly received a reference.

https://blog.sandstorm.io/news/2014-12-15-capnproto-0.5.html

https://capnproto.org/cxxrpc.html

Incoming HTTP to a Sandstorm app actually happens through this Cap'n Proto protocol:

https://github.com/sandstorm-io/sandstorm/blob/master/src/sa...

Of course, for backwards-compatibility, we have translation layers so that apps written to use regular old HTTP need not be entirely rewritten. You just have to tweak it to make the correct permissions request first, which has proven not very hard in practice.



So can I use sandstorm to run a personal RSS reader? It seems like one of the things it would be well suited for.


Yes. We have TinyTinyRSS on there now.

Note that Sandstorm is still in development and for the moment we've created a hack to allow ttrss to make arbitrary HTTP requests in order to update feeds.

However, in a few more months this won't be necessary. Instead, when you click "subscribe to feed", the app will call a method on the Sandstorm API saying "Prompt the user for a URL and then give me permission to access it". So, you'll get a dialog box to enter the URL rendered by Sandstorm itself. If you enter a URL, it's plainly obvious that you want the app to have permission to fetch it, so Sandstorm grants said permission. We call this UI the "powerbox".

Notice how the UX here is equivalent to what we have today, where the app renders its own prompt. This technique of inferring security decisions from actions the user was doing anyway is the core of how we plan to implement tight security without inconveniencing the user.


I've been using TinyTinyRSS on Sandstorm for a while. It even has a mobile app that works with Sandstorm's API. (Though it's a fork, not the official Play Store version.)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: