通过客户端从服务器发送到服务器的敏感数据

问题描述:

我有需要跨多个Web服务验证客户端的情况。基本上,每项服务都需要识别客户端并了解其他一些关于客户端的小部分信息。通过客户端从服务器发送到服务器的敏感数据

我现在工作的方式是,所需的标识信息通过身份验证Web服务器存储在数据库的会话表中。 Web服务器向客户端传递一个字符串,该字符串标识数据库条目并传递给其他Web服务。然后,Web服务使用此字符串从数据库条目中提取有关客户端的所需信息。

我已经想到,可能会为客户端提供一个加密的blob,其中包含用户标识和其他所需的信息,这些信息相当小,并且完全避免使用数据库。客户端只需传递blob(就像前一段中的字符串),而不需要知道它包含的内容,只有Web服务会知道如何解密它。

这应该消除数据库存储会话信息的需要,并且会使整个过程更简单一些。有了数据库,您不得不担心清理旧会话和超时等问题。

所以我的问题:是否将服务中的敏感数据通过客户端传递给服务,认为是安全且可接受的?是否有可能以这种方式来消除客户篡改数据的担忧?什么加密算法会很好用?我使用.Net特定的类将会非常有帮助。

这似乎是一个合理的方法来简化您的应用程序,但请记住,如果您使用客户端来存储识别数据,您将永远容易受到session hijacking attacks

换句话说,无论你如何对blob进行加密,其他人都可以获取用户的浏览器数据并将其复制并冒充用户。顺便说一下,ASP.Net会话cookie也总是易受攻击。

完全安全的唯一方法是使用SSL。