What to Do

Allow the user to verify the authenticity of your application.

Why

Some applications are targets for phishing attacks. Failure to authenticate against the user allows attackers to spoof the application. This can fool the users into submitting their credentials or other sensitive information into an attacker's malicious application.

When

If your application handles sensitive data and allows public access, verify your application's authenticity to your users.

How

Use the following measures to authenticate your application to its users:

  1. Use SSL. Due to the nature of the SSL certificates, SSL can be used to certify the remote host's name. Because of SSL's chain of trust and DNS limitations, spoofing a host that uses SSL is very difficult.

  2. Display personalized and identifiable content. Do not ask the user for credentials in one step. Instead, after the user enters a valid username, display personal and identifiable content to which the user can relate, for example: a personal user-supplied question, an image that has been pre-selected from a library, or a personalized color schema. After the user has authenticated the application, they may enter their password.