It is always recommended to prevent attacks as early as possible in the processing of the user’s (attacker's) request.
Input validation can be used to detect unauthorized input before it is processed by the application.
Detailed information on XSS prevention here: OWASP XSS Prevention Cheat Sheet Many websites allow users to upload files, such as a profile picture or more. Many web applications do not treat email addresses correctly due to common misconceptions about what constitutes a valid address.
Specifically, it is completely valid to have an mailbox address which: At the time of writing, RFC 5321 is the current standard defining SMTP and what constitutes a valid mailbox address.
White list validation is appropriate for all input fields provided by the user.
Input Validation should not be used as the primary method of preventing XSS, SQL Injection and other attacks which are covered in respective cheat sheets but can significantly contribute to reducing their impact if implemented properly.In this article you’ll construct and validate a simple form using HTML and PHP.The form is created using HTML and validation and processing of the form’s contents is done with PHP.This does not mean that other users cannot access this mailbox, for example when the user makes use of a service that generates a throw away email address.As the local-part of email addresses are, in fact - case sensitive, it is important to store and compare email addresses correctly.If the input field comes from a fixed set of options, like a drop down list or radio buttons, then the input needs to match exactly one of the values offered to the user in the first place.Free-form text, especially with Unicode characters, is perceived as difficult to validate due to a relatively large space of characters that need to be whitelisted.In summary, input validation should: Example validating the parameter “zip” using a regular expression.private static final Pattern zip Pattern = Pattern.compile("^\d(-\d)?To normalise an email address input, you would convert the domain part ONLY to lowercase.Unfortunately this does and will make input harder to normalise and correctly match to a users intent.