I know that I can use Crypt::encrypt and Crypt::decrypt which utilises the key stored in the .env - is this enough security inside the application itself, or are there other things that I should look into?
Yes, that will handle the encryption of data. You can also use the encrypt() and decrypt() helpers (which do the same thing).
Of course, there are other security considerations beyond encryption. Laravel helps you with several things, such as CSRF protection on forms, using PDO for database access, escaping strings in Blade templates, and helping you hash passwords (note passwords should always be hashed, never encrypted).
But Laravel can't do everything for you. Security is a complex topic. Here are a few thoughts:
- How will you keep your web server secure? Laravel Forge? ServerPilot? Handle everything yourself?
- How about your TLS configuration?
- Will you use a content security policy (CSP)?
If you're building an app from scratch and you really care about security, you have a good opportunity to use a strong CSP right from the start. It is much harder to retrofit CSP to existing projects.
Some good tools for checking your site:
Also, what steps should I take when setting up a server for this kind of application - would something like AWS be a good option? I usually just use linux servers with mysql but looking to use a better stack as I feel like I'm using an archaic setup.
Stick with what you know, unless you have a specific need for something different. AWS is amazing if you need huge scalability, but otherwise you're just making life more complicated.
I do particularly recommend ServerPilot though. This will secure your server and set up a better stack: Nginx as a reverse proxy in front of Apache, great TLS configuration, HTTP2 and Brotli out the box...