Perform security tests in CD/CD: CI/CD processes and tools are great places to include security tools and security uni-test cases. Generally, developers are amenable to fixing flagged vulnerabilities on merges but more resistant to addressing large security coding problems prior to shipping a product/service.
Understand your software supply chain: include automation in CI/CD process to create a list of third-party components. OWASP Dependency check can help you identify your components, versions, and known vulnerabilities associated with each library version.
Upgrade your libraries: To benefit from vulnerability remediation in your software supply chain, you must upgrade your third-party libraries.
Use popular third-party libraries: Use only well-maintained third-party libraries. Libraries that are not well-maintained will impact your security agility and will leave you vulnerable longer to well-known issues.
Design for easy upgrades: Establish development standards for code compliance. For example, you may be compiling with Java 11, but you can mandate code compliance to Java 9. The benefit of separating your build compliance from software code compliance is that you have more flexibility to downgrade or upgrade.
Avoid poor configuration: avoid hardcoded/clear text passwords in configuration. Use information from sites like "Security/Server side TLS at Mozilla" to generate configuration/ provide cipher suite recommendations.
Protect against MITM attacks: Employ encryption to defend against man-in-the-middle (MitM) attacks.
Protect against replay attacks: You can use a cryptographically secure nonce to defend against a replay attack.
Apply security controls on the server: Designers often apply validation to Javasript front-ends for web apps. It's acceptable to include validation on the client for performance reasons, saving a round-trip to the server. However, client security can't be applied in lieu of server security. All security controls must be deployed on the server since attackers can bypas browser security controls by calling your web service interfaces directly.
Protect against credential leakage: Ensure all servers communicate securely through encrypted connections. Don't store credentials in the clear. Store passwords hashed and salt hashes on a per-user basis.