Security Best Practices for Fintech Application Development
community.marqeta.com
community.marqeta.com
> Similar to encryption in transit, practicing data encryption at rest—using standards like AES-256—will ensure that stored data is not accessible to any application or user unless they present the decryption key.
A lot of people seem to have the attitude "Oh, my DB is in Amazon RDS, and they say everything is encrypted, so I'm good". However, if your DB creds get hacked, they can still read all the info in your DB.
What should really be required is a tokenization or app-side encryption scheme, ideally using something like AWS or GCP KMS so that all decryption requests are logged and monitored, for any even remotely sensitive data that is saved to the DB. That can also make it much easier for developers, because it's safe to give out read-only user access if you're sure they can't read any sensitive private data.
In the event that some DB creds get leaked or brute forced or however, to the application/DB those creds will look just as legit and any irregularities would only be discovered at best while the data is being taken
A lot of these points are applicable outside of Fintech. If you have any type of data that if leaked could ruin your business then it's worth a look over.
It's an iframe, embedded in some random web page, that asks you for additional security-related information?
How is that still a thing?
It's been superseded in a bunch of ways, but it cut down on fraud, so it has been useful.
That's the only metric the payment network participants really care about. Perfection would be great, but as long s there are results, they're good with it.
Didn't realize it was anything other than these 2 things?
The old implementation with the iframe was bonkers, just teaching people to enter their banking credentials on random sites. I hope it bit them in court if they ever tried to blame customers for getting phished.
Given the low interchange rates in Europe I would have guessed that despite some flaws overall reduction in fraud was effective.
If you have invoices,accounts or statement pages/API's.
Please make sure ONLY the real user or admin can see the data.
Example:
myfintech.co/accounts/?invoice=123
myfintech.co/accounts/statement/?user=456
I've seen this COUNTLESS of times with big and small companies.
It's my favorite thing to do when signing up for a new service. See if I can wiggle-waggle the account-statements.Like I said, it's a really simple thing, and maybe most of HN readers are "above these sort of errors", but I see a few times a year, with just the services I use.
Also a good little tip(again might be preaching to the wrong crowd) is to use some form of non-deterministic ID-schemes for accounts,statements and of course user-ids.
UUID's are great for this, If for some reason you do have a gap in you system and your id's are deterministic, the bad-actor can just enumerate ALL accounts and users.
Sorry if I'm insulting the "average HN reader" with this "simple and obvious mistakes", but I like I said, I see this A LOT. YMMV
Some of them do offer security benefits (e.g. tokenization) but are often considered more because they reduce cardholder data within your network, which can make things a lot cheaper. A rare example of economic and security factors aligning!