TL;DR: Sanitize everything that comes from outside your control.
- Use sanitization and input filtering techniques.
Whenever you get input from an external resource, a security principle requests you to validate and check for potentially harmful inputs.
SQL Injection is a notable example of a threat.
We can also add assertions and invariants to our inputs.
Even better, we can work with Domain Restricted Objects.
user_input = "abc123!@#" # This content might not be very safe if we expect just alphanumeric characters
import re def sanitize(string): # Remove any characters that are not letters or numbers sanitized_string = re.sub(r'[^a-zA-Z0-9]', '', string) return sanitized_string user_input = "abc123!@#" print(sanitize(user_input)) # Output: "abc123"
We can statically check all the inputs and also we can also use penetration testing tools.
We need to be very cautious with the inputs beyond our control.
Code Smells are just my opinion.
Companies should make their own enterprise systems as often as network security companies should manufacture their own aspirin.
This article is part of the CodeSmell Series.