WeebWare / Ranobe-Honyaku

A novel translation platform.
MIT License
8 stars 2 forks source link

Auth #7

Closed cloudiirain closed 7 years ago

cloudiirain commented 7 years ago

Summary

We need to discuss and decide on what auth system to use.

Current Opinions

(Note I haven't looked into most of these carefully. If you have existing experience with any of these, feedback is appreciated)

If you find blog articles or posts commenting on Flask auth, share them please!

cloudiirain commented 7 years ago

@SunDwarf has declared Flask-Security <3

I'm happy with that and so is @GetRektByMe

viggy96 commented 7 years ago

Firebase also allows traditional username/password logins as well.

viggy96 commented 7 years ago

That way we'd only have to store user tokens in the database, no matter the auth method used. Further, we'd only get access to the users information (e-mail) when we need it.

viggy96 commented 7 years ago

So, even if the database is compromised, the attackers wouldn't even get a list of e-mails, just a bunch of tokens which would be pretty much impossible to de-hash.

viggy96 commented 7 years ago

https://firebase.google.com/docs/auth/

Fuyukai commented 7 years ago

Yes, but then you have the issue of trusting anyone else with your security details (which is a big no)

viggy96 commented 7 years ago

That's always an issue. One way, the users would have to trust us , and the other, trust Google And honestly I would trust Google with security details more than ourselves, because let's face it, if Google gets compromised, the world has much bigger issues. Also: https://www.youtube.com/watch?v=8ZtInClXe1Q

viggy96 commented 7 years ago

We don't want to risk our user's private information getting compromised. In my opinion, NOT doing authentication ourselves is the best way to do that. And further, its not like Google is just storing a HashMap, of user auth data. All they're doing is hashing the data (and salting) we send them and comparing the hashes. With their vast amount of experience on the matter, I'm pretty sure Google would do a good job. And if you're worried about DMCA people knocking on Google's door, they would probably say, "we don't have that information" because they don't store that information in plain text, and the salted hashes can't be undone.

Fuyukai commented 7 years ago

In the end, you still have to send the data over the wire. Who knows if that's compromised or not?

It doesn't matter what company you use, you're still sending it to a third-party, which you don't have control over, or control over the intermeditary parties transmitting the data.

viggy96 commented 7 years ago

Again, that is still an issue regardless. The user still has to send their password to us. However, the issue is the storage and actual authentication process. And there are not intermediary parties, just us and Google. If you don't trust TLS 1.2, we might as well give up.

For that matter, who knows if the user's machine is compromised or not, or the ISP is compromised or not? There are a dozen holes in authentication, I'm trying to solve just a few.

If we just DON'T store passwords and e-mails we can further protect the users' information.

cloudiirain commented 7 years ago

Saving both of these links for later reading.

I personally think both of you have valid points. I do think that using Firebase is more secure then storing data locally -- however, it's a business decision. Flask-Security should be secure enough for production, but how much more secure you want to be is a whole another question.

I'm going to start a branch with Flask-Security because the documentation is straightforward and Fuyu has experience in it (which is very valuable, by standards). ...also part of me just doesn't want to go through the process of making accounts and setting up data stores with Firebase. ;-; ...because laziness. :c (If we did end up going with Firebase, I think @viggy96 might need to do most of the setup since you seem to be familiar with it). Flask-Security is personally more familiar to me because most web frameworks have a similar extension.

byronvanstien commented 7 years ago

Decided on Flask-Security

byronvanstien commented 7 years ago

Switched to hashing with scrypt