Security Hardening
15 articles
How to Encrypt and Decrypt Data in Go (AES, RSA)
Use the `crypto/aes` package for symmetric encryption (fast, same key) and `crypto/rand` with `crypto/cipher` for secure initialization vectors, while relying on `crypto/rsa` for asymmetric operations where you encrypt with a public key and decrypt with a private key.
How to Generate and Validate API Keys in Go
Generate API keys using `crypto/rand` to create cryptographically secure random bytes, then encode them as Base64 or Hex strings for storage.
How to Generate Self-Signed Certificates in Go
Generate a self-signed certificate in Go using crypto/x509 and crypto/rand packages.
How to Implement Input Validation and Sanitization in Go
Prevent security vulnerabilities in Go by using html/template for automatic escaping and filepath.IsLocal or os.OpenRoot for safe file access.
How to Implement Rate Limiting to Prevent Abuse
Implement rate limiting in Go is best done using the `golang.org/x/time/rate` package, which provides a token bucket algorithm to control the frequency of operations.
How to Implement RBAC (Role-Based Access Control) in Go
Implement RBAC in Go by manually mapping roles to permissions and checking them in your middleware or handlers.
How to Implement Session-Based Authentication in Go
Implement session-based authentication in Go by generating a random session ID, storing it server-side, and managing it via secure HTTP-only cookies.
How to Prevent XSS and CSRF in Go Web Applications
Prevent CSRF by using net/http.CrossOriginProtection and stop XSS by escaping user input with html.EscapeString.
How to Sign and Verify Data in Go
Sign and verify data in Go using crypto/rsa or crypto/ecdsa packages with SHA256 hashing for secure digital signatures.
How to Use crypto/rand for Secure Random Numbers in Go
Generate secure random bytes in Go using the crypto/rand package's Read function for cryptographic safety.
How to Use govulncheck for Vulnerability Scanning
Run `govulncheck` directly on your Go source code or binary to identify known vulnerabilities without needing to build the project first.
How to Use HMAC in Go
Compute an HMAC in Go by importing crypto/hmac and crypto/sha256, creating a new HMAC instance with your key, writing your message, and calling Sum to get the result.
How to Use HTTPS/TLS in Go
Enable HTTPS in Go by loading certificate and key files into a tls.Config and passing it to your HTTP server.
How to Use the crypto/tls Package for Custom TLS Configurations
You use the `crypto/tls` package by creating a `tls.Config` struct, customizing fields like `RootCAs` or `InsecureSkipVerify`, and passing it to `tls.Dial` or `http.Transport`.
Security Best Practices for Go Web Applications
Enable GODEBUG path protections and report vulnerabilities to security@golang.org to secure Go web applications.