Authentication in front of the collector?

Hi all,

We have been using snowplow for a while and it has really changed our ways of working with event data.

We are now at a point where we are thinking more about security. What is your suggestion on handling unauthorized requests? This is to mitigate inflow from anybody else who would know about our tracker and send in malicious tracking data.

I can’t seem to find anything on this and I see in Amplitude have this API key setup provided in their guides.

Thanks!

I think part of this depends on what sort of unauthorized requests you are expecting. Snowplow is like many tools (Amplitude, Google Analytics, Adobe etc) in that it provides an open endpoint where anyone can send any data, generally without any form of authentication or authorization.

If you’re only expecting users to be logged in you can put a level of authentication in front of the collector endpoint but like most tools - at least from a client side (Javascript) perspective there’s unfortunately little you can do stop unauthorized requests entirely.

We’ve seen some clients generate a checksum / hash for events occurring client side (that is attached to each event) but as all this code executes on the users device there’s not really anything stopping a determined actor from reverse engineering it and figuring out how to generate their own hash assuming they are determined enough. Others go with server-side generated hashes but again this still has shortcomings.

I wish there was a better approach for this but unfortunately I’m not aware of one!