Meus 2 cents,
Seguranca de um SaaS envolve diversos pontos e depende da tua configuracao, mas algumas dicas mais genericas:
-
Pesquise sobre "hardening" - eh o termo usado sobre ajustes de seguranca. Voce pode pesquisar sobre "hardening vps", "hardening php" ou "hardening php vue"
-
Grosso modo, voce tem 3 superficies de ataque: a VPS, o WEB Server e o frontend.
2.1) Grosso modo, existem 2 tipos de ataque: oportunismo/Spray-and-pray e targeted
2.2) oportunismo/Spray-and-pray: sao ataques automatizados em larga escala, tentando exploits padrao. Sao um saco, consomem banda, mas nada do outro mundo (p.ex. um honeypot imap que tenho recebeu cerca de 177 MIL nos ultimos 3 dias - sao principalmente ataques de forca bruta chutando usuarios e senhas). O fail2ban e modsecurity dao conta destes (abaixo)
- VPS:
3.1) Dentro do possivel, mantenha autenticacoes 2FA
3.2) Dentro do possivel, troque o acesso root com senha por acesso via "authorized_keys"
3.3) Dentro do possivel, troque a porta do SSH (do padrao 22 para outro, p.ex. 65022)
3.4) Se possivel, utilize o servico 'fail2ban' - eh um daemon que fica observando teus logs e levanta regras de firewall basicas (p.ex. DROP) quando detecta um ataque. So que tem de ser configurado.
- WEB Server
4.1) Se possivel, utilize o servico 'modsecurity' - eh um WAF (web application firewall), semelhante ao fail2ban - fica olhando o trafego e levanta regras no firewall quando detecta um ataque. Acredite, um SaaS sofre muitos ataques, mas a maior parte inocuos porque visam itens que voce provavelmente nao tem (p.ex. wordpress)
- Frontend
5.1) Estes ja acho perigosos, pois vao visar as fragilidades do teu codigo.
5.2) Sempre faca "sanitização" dos dados recebidos por formulario - basicamente passar uma funcao que aplique slashes e filtros. Verifique se tem "CORS".
5.3) Nunca confie ou armazene dados sensiveis em cookies: no maximo um ID de sessao - os dados sensiveis tem de estar do seu lado. Lembre-se: cookies podem ser manipulados localmente, entao colocar nome de usuario, nivel de acesso, etc - eh pedir para se incomodar.
5.4) Isso vale especialmente para dados de carrinho e pagamento: nunca confie - o backend sempre tem de revalidar e enviar os dados
5.5) Dentro do possivel, nunca informe dados de recuperacao de senha: no maximo peca para o usuario entrar novamente o email de cadastro e avise que caso existe, um link de recuperacao foi enviado para j***@e**.com.br
5.6) Dentro do possivel, habilite 2FA ou senhas OTP no SaaS. Por exemplo, ao inves do usuario ter uma senha, sempre envie um codigo para o celular dele depois que ele digitou o usuario.
Tem mais coisas, mas acho que ja deu para entender.
Saude e Sucesso !