我将信息保存在本地存储中,我想确保用户没有替换数据或对数据感到满意。
客户端会收到一个对象,用JavaScript对其进行分析,然后将其存储在浏览器的本地存储中。
每30秒将数据发送到服务器,服务器根据另一个先前发送的数据由另一个对象答复。
该过程经常发生,因此最好避免发送服务器大量数据并进行大量查询以验证完整性。
我知道客户端中的Java脚本易于调试,逆向工程等。但这肯定会增加一层安全性,因此至少有些人不会打扰。 (默默无闻的安全性)
我最初的想法是对要存储的值进行校验和,然后将其发送到服务器,然后将其与存储的校验和进行比较。如果结果不匹配,请在客户端上消除数据。我认为最好避免存储在数据库中,并且能够检查某些功能是否合法。
我希望存储的数据看起来像令牌(如签名或加密的base64字符串)而不是原始数据,因为它会泄漏一些有关代码工作方式的信息,并可能使其变得脆弱。
是否有图书馆或这样做的方法可以对我的旅途有所帮助?
答案 0 :(得分:1)
是否可以在客户端对数据进行签名/加密,以确保不被用户操纵?
简短询问-不,不可能。
长答案-任何消息身份验证代码(签名,hmac等)都需要一个秘密值。一旦您通过JavaScript在客户端进行签名,便无法阻止用户访问机密或修改数据。
考虑到用户甚至可以修改应用程序以更改客户端验证。长话短说-永远不要信任用户的输入,您必须始终在服务器端验证数据。
建议-您可以将数据发送到服务器服务,并且服务器可以对数据进行签名/ hmac。验证数据完整性的方法相同。
但这肯定会增加一层安全性,因此至少有些人不会打扰。 (默默无闻的安全性)
我认为-没关系。如果用户不在乎,他将不会修改数据。如果您有一个目标明确的用户,那么不会产生任何困惑。
我希望存储的数据看起来像令牌(例如签名或加密的base64字符串)
没有什么可以阻止您这样做的。