Security checklist - developing a website
This is a design checklist – things you should keep in mind while developing websites.
User inputs
Check |
Description |
User inputs are checked for type, length and content. |
|
User inputs with arithmetic operations are checked and validated for minimum and maximum values. |
|
All user inputs are validated on server side as well as on client side. |
|
Values stored in hidden form fields are validated properly. |
Attack prevention
Check |
Description |
Cross-site scripting |
|
User inputs are escaped and validated. |
|
Content is encoded before it is rendered on a page. |
|
Strings from external sources are encoded using the HTMLHelper.HTMLEncode() method. |
|
URL parameters are sanitized using the QueryHelper.GetText() method. |
|
Values from external sources rendered as part of JavaScript code are encoded using ScriptHelper.GetString(). |
|
Cookies are configured as http-only. |
|
SQL injection |
|
SQL parameters are used for dynamic parts of SELECT, INSERT, UPDATE and DELETE queries. |
|
The exec() function is not used in SQL code. |
|
Cross-site request forgery |
|
Actions are performed using POST requests, not GET. |
|
View state mac validation is enabled globally in the web.config file.
|
|
LDAP injection |
|
User inputs for LDAP queries are sanitized before execution. |
Other issues
Check |
Description |
User accounts are secured against all types of attacks. |
|
Error messages in the UI are configured so that they show only basic information and the whole information is logged only into the Event log. |
|
File upload |
|
Name, length, type and content of files is checked upon file upload. |
|
Logging |
|
All critical activities in the website are logged. |
|
The website does not allow unhandled exceptions to occur. |