繁体   English   中英

从客户端到服务器端签名JSON数据

[英]Signature the JSON data from client-side to server-side

我将一些JSON数据从客户端发送到服务器端。

有能力的用户可以修改JSON数据,因为该代码可用于任何人(JS脚本)。

如何针对伪造的JSON数据检查正确的JSON数据。

我考虑过一些签名,但是我不知道该怎么做。

谢谢你的帮助!

例:

//real//
let user = {
    name: "John",
    gender: "man"
}

//fake//
let user = {
    name: "John",
    gender: "woman"
}

只是示例,JSON数据可以不同。

EDIT1:我可以验证数据是否正确,但这将非常困难。

您需要为Javascript使用JSONSchema验证器。 @TDEGrunt 在这里很不错。 有关如何使用它的示例,请参见自述文件。

感觉就像是从山坡上爬出来。

听起来像“伪造”数据,您的意思是不应允许用户修改数据,和/或不完全符合逻辑? 与其尝试控制他们发送的内容(这非常困难),不如直接检查一下。 你应该:

a)验证其发送的内容(无论如何,应进行检查,以检查诸如字符串之类的地方应该有数字,或者逻辑上不属于在一起的值组合(例如, "state: "Alaska", "country: "Russia" )),并在发现问题时返回验证错误,

和/或

b)让您的服务器忽略用户不应该更新的任何字段(这是对有时被称为“过度发布”攻击的防御)。

和/或

c)检查用户对特定数据项的权限。 例如,也许他们可以修改自己的名字,但不能修改别人的名字。

是的,数据验证可能很乏味,但这是任何基于Web的应用程序中正常且非常必要的部分。 由于您不能完全控制客户端,因此您不能信任发送给您的任何信息,并且必须始终检查数据是否基本有效,并且客户端可以(针对您的身份验证和授权规则)核实它们是否具有发送该数据的权限(或者,如果这是请求的目的,则实际上是要获得的数据)。

大多数编程框架都具有内置功能(通常由3rs party软件包进行增强,以使验证,身份验证和授权的代码痛苦减轻得多)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM