When building a customer-facing web application, what approach to input validation should be implemented to most effectively mitigate injection attacks?
Using cryptographic hashing of all inputs to avoid storing or processing plaintext input data
Relying on a blocklist input validation to exclude known dangerous characters and patterns
Enforcing data type constraints and requiring inputs to match the expected data types
Implementing a allowlist input validation mechanism that accepts only specified inputs