that's a good call actually. I got pretty hung up on domain objects being mostly data classes, but one approach is to have them perform business logic themselves.
vvv
Not a security scientist, but in my interpretation, it's the "categories" of the factors that matter. Ideally, you use some two of three of:
- something (only) you know - generally represented by passwords
- something (only) you have - most commonly represented by some device. you prove that you have the device by providing a token only that device can generate.
- something (only) you are - generally represented by biometrics
the goal then is maintaining the "only"s.
if you tell someone your password, or they see you type it in, or they beat it out of you with a wrench, it's no longer something "only" you know, and it is compromised.
if you use the same password on two websites, and one website is compromised, the password is compromised.
OTPs from a key fob or yubikey or something are similarly compromised if the device that provides them is left out in public/lost/stolen/beaten out of you with a wrench.
biometrics are again, are compromised if it's not "only" you with access to them - someone scans you face while you're asleep, or smashes your finger off with their wrench.
having multiple factors in the same category, like having two passwords, or two otp tokens, or two finger prints, doesn't significantly improve security. if you give up one thing you remember, it's likely you'll give up more. if one fob from your keychain is stolen, the second fob on that keychain is of no additional help.
you can start shifting what categories these things represent though.
if you write down your password in a notebook or a spreadsheet, they become thing you have.
OTPs can become something you know if you remember the secret used to generate them.
knowing many different things is hard, so you can put them in a password vault. the password vault is then something you have, which can be protected by something you know. so although your OTPs and passwords are in one place, you still require two factors to get access to them.
you still need to protect your "only"s though. and don't put yourself in situations where people with wrenches want your secrets.
I use passwordstore.org/ as my password manager, including for my otp codes. It's backed by a git repo. I get a backup of it on every device it is cloned to.
(often abbreviated BS)
Thanks for that, I think Engines is winning in my mind so far!
Be careful, if you get a .pizza
, you are only legally allowed to spend the donations on pizza.
Further, in terms of safety, having a large display built into your dash showing you navigation is much better than a small device you jerryrig onto a vent or something. It's easier to see via your peripheral vision, and won't put you in a situation where you need to go find it off of the floor when it falls off.
just to give you the term to search for, these types of applications are called snippet managers. for example, https://snibox.github.io/
there's a ton of them around. I don't have a particular one that I recommend, since it's not something I use in my workflow.
I can't believe they didn't with go with BatShIt. it's right there! they were SO close!
grep -r
exists and is even more faster and doesn't require passing around file names.
grep -r --include='*.txt' 'somename' .
I just started using this at $jorb. Check out their "ui-mode" is all I'm going to say about that.
Your two factors shift to possession of your password vault + knowledge of the password to it. You're okay IMO.
You also still get the anti-replay benefits of the OTPs, though that might be a bit moot with TLS everywhere.