17.6. Storing Data Securely
Problem
You need to store settings data about individual users for use by your application and keep this data isolated from other instances of your application run by different users.
Solution
You can use isolated storage to establish per user data stores for your application data and then use hashed values for critical data.
To illustrate how to do this for settings data, you create the following UserSettings
class. UserSettings
holds only two pieces of information: the user identity (current WindowsIdentity
) and the password for your application. The user identity is accessed via the User
property, and the password is accessed via the Password
property. Note that the password field is created the first time and is stored as a salted hashed value to keep it secure. The combination of the isolated storage and the hashing of the password value helps to strengthen the security of the password by using the defense in depth principle. Salting the hash is an extra measure of protection that not only protects the password against dictionary type attacks, but it also prevents an attacker from easily determining if two users have the same password by comparing the hashes.
The settings data is held in XML that is stored in the isolated storage scope and accessed via an XmlDocument
instance.
This solution uses the following namespaces:
using System; using System.IO; using System.IO.IsolatedStorage; using System.Xml; using System.Text; using System.Diagnostics; using ...
Get C# 3.0 Cookbook, 3rd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.