https://github.com/FallibleInc/security-guide-for-developers/blob/master/security-checklist.md
Bcrypt
(no salt necessary - Bcrypt
does it for you).logout
.state
parameter in OAuth2.OTP
based mobile verification, do not send the OTP back in the response when generate OTP
or Resend OTP
API is called.Login
, Verify OTP
, Resend OTP
and generate OTP
APIs for a particular user. Have an exponential backoff set or/and something like a captcha based challenge.my cart
, my history
should check the logged in user's ownership of the resource using session id./me/orders
instead of /user/37153/orders
. This acts as a sanity check in case you forgot to check for authorization token.Edit email/phone number
feature should be accompanied by a verification email to the owner of the account.Profile photo upload
feature should sanitize all the EXIF
tags also if not required.UUID
instead of integers. You can find an implementation for this for your language on Github.salt
from payment gateways should not be hardcoded.secret
/ auth token
from 3rd party SDK's should not be hardcoded.server to server
should not be done from the app.Add
CSP header to mitigate XSS and data injection attacks. This is important.Add
CSRF header to prevent cross site request forgery. Also add SameSite attributes on cookies.Add
HSTS header to prevent SSL stripping attack.Add
your domain to the HSTS Preload ListAdd
X-Frame-Options to protect against Clickjacking.Add
X-XSS-Protection header to mitigate XSS attacks.Sanitize
all user inputs or any input parameters exposed to user to prevent XSS.Sanitize
user input for special cases like robots.txt as profile names in case you are using a url pattern like coolcorp.io/username.open ports
.databases
especially MongoDB & Redis.