We are currently designing a Web Service that returns a JSON formatted messages. The following are the planned implementation for the service's security:
An SSL Certification to the service for the communication security over the internet.
Transport Layer Security (TLS) and its predecessor, Secure Sockets Layer (SSL), are cryptographic protocols that provide communication security over the Internet. The server sends back its identification in the form of a digital certificate. The certificate usually contains the server name, the trusted certificate authority (CA) and the server's public encryption key. - wikipedia.org
Encryption of sensitive data using hashes and salt.
Encryption is in Symmetric (Rijndael) Key - Rijndael can be specified with block and key sizes in any multiple of 32 bits, with a minimum of 128 bits. The blocksize has a maximum of 256 bits, but the keysize has no theoretical maximum. - wikipedia.org
Client Authentication using custom username and password validator
WCF allows for custom user name and password authentication schemes, also known as validators. - msdn.microsoft.com
The service will be consumed by different clients and the data should be secured. The following are the possible risks[1]:
- Broken Authentication and Session Management - Application functions related to authentication and session management are often not implemented correctly, allowing attackers to compromise passwords, keys, session tokens, or exploit other implementation flaws to assume other users’ identities.
- Insecure Direct Object References - A direct object reference occurs when a developer exposes a reference to an internal implementation object, such as a file, directory, or database key. Without an access control check or other protection, attackers can manipulate these references to access unauthorized data.
- Security Misconfiguration - Good security requires having a secure configuration defined and deployed for the application, frameworks, application server, web server, database server, and platform. All these settings should be defined, implemented, and maintained as many are not shipped with secure defaults. This includes keeping all software up to date, including all code libraries used by the application.
- Insecure Cryptographic Storage - Many web applications do not properly protect sensitive data, such as credit cards, SSNs, and authentication credentials, with appropriate encryption or hashing. Attackers may steal or modify such weakly protected data to conduct identity theft, credit card fraud, or other crimes.
- Insufficient Transport Layer Protection - Applications frequently fail to authenticate, encrypt, and protect the confidentiality and integrity of sensitive network traffic. When they do, they sometimes support weak algorithms, use expired or invalid certificates, or do not use them correctly.
If an attack had succeeded in penetrating in our service, a great loss will fall in our company. The following are the possible result of a successful attack:
- Any data manipulated in any malicious way might cause a great loss into our company's profits.
- Accessing of unauthenticated clients allows them to change and add malicious data and/or slow down or break the service causing the service to be inaccessible.
Is our planned implementation for the service's security sufficient enough to prevent these risks? What other security issues we need to consider?
[1] Risk name and definition are based on OWASP Application Security Risks.