当前位置: 首页 > 知识库问答 >
问题:

node.js-检查对象中是否有意外字段

白吕恭
2023-03-14

我正在将带有用户信息的对象从客户端发送到我的服务器:

const newUserData = {
    name, 
    username,
    gender,
    avatar,
} 

我害怕一个“坏用户”,试图黑我的系统修改客户端,就像这样:

const newUserData = {
    name, // I validate type and format in the server
    username,  // I validate type and format in the server
    gender,  // I validate type and format in the server
    avatar,  // I validate type and format in the server
    totalFollowers: 4022348978890, <------- Unexpected field on the server side...
    premium: true <------- Unexpected field on the server side...
} 

然后,如果我在服务器中得到这个对象,并更新数据库,用户就会很有名,而且是溢价的。

在服务器端,我只需要字段“name”、“username”、“gender”和“avatar”。

如果对象“NewUserData”有其他意外的字段,我如何签入node.js?

注意:我正在寻找一个通用的方式,因为黑客可以添加他/她想要的字段,在客户端。

共有1个答案

荀子轩
2023-03-14

无论用户通过编辑api请求参数发送数据,只要您只访问特定属性并将其作为目标,在服务器端都不会产生任何差异。例如,如果我只想要服务器上的用户名、电子邮件或密码,那么显然我将只从API请求参数中获得这3个值,而不关心其余的参数。我可能会编辑请求并添加100个其他参数,这些参数将只发送到服务器,但由于您只从请求对象访问了3个值,因此所有其他参数都将被忽略。不需要实现复杂的逻辑但是,您可以为此使用以下简单的伪代码逻辑。

const allowed_params = ['username','email','password']
foreach(param in request.params){
 if(param in allowed_params){
    //this is only that is allowed
 }else{
   //just ignore this
 }
 类似资料:
  • 问题内容: 我的numpy数组用于指定缺少的值。在遍历数据集时,我需要检测这些缺失值并以特殊方式处理它们。 我天真地用过,除非不在所支持的类型子集中,否则它会很好地工作。例如,字符串字段中可能会出现丢失的数据,在这种情况下,我得到: 除了编写昂贵的包装来捕获异常并返回外,还有没有办法优雅而有效地处理此包装? 问题答案: (也是,在较新的版本中)检查数字数组和字符串/对象数组中的缺失值。从文档中,它

  • 我想检查一个对象是否有新的子对象。我的意思是我有一个带有x嵌套对象的对象,但是如果主对象有新对象,我会检查它。有什么现有的解决方案来检查这个问题吗? 我的目标是如果对象有新项目,则调用函数。每次数组更改时,此代码都会调用该函数。也当一些项目被删除。这部分功能是错误的。有办法修好它吗?

  • 问题内容: 有没有一种快速的方法来检查对象是jQuery对象还是本机JavaScript对象? 例: 显然,上面的代码有效,但并不安全。您可能会向对象添加选择器键并获得相同的结果。有没有更好的方法来确保该对象实际上是jQuery对象? 符合 问题答案: 您可以使用运算符: 说明 :该函数(又名)被实现为构造函数。构造函数将以前缀调用。 调用时,内部jQuery将此转换为1。JavaScript继续

  • 问题内容: 如何检查值是否是JavaScript中的Object? 问题答案: 更新 : 这个答案是不完整的,并且会产生误导性的结果 。例如,在JavaScript中也被视为类型,更不用说其他几种极端情况了。请遵循以下建议,然后转到其他 原始答案 : 尝试使用和/或。 编辑:这个答案给出了一个如何检查变量属性的想法,但是它不是一个防弹配方(毕竟根本没有配方!)来检查它是否是一个对象,而不是对象。由

  • 问题内容: 假设类型 A的 对象存储在DB中。这是我使用hibernate从数据库加载特定数据库的方式: 如果id = 1的对象不存在,我将得到 ObjectNotFoundException 。但是,有没有一种方法可以检查此类对象是否存在而不必捕获异常?我想拥有的是: 找不到hibernate文档… 问题答案: 您可以使用: 如果对象在数据库中不存在,它将返回null。您可以在Hibernate

  • 问题内容: 我有下一个JSON: 知道JSON对象中是否存在“ dog”值的最佳方法是什么? 谢谢。 解决方案1 解决方案2(JQuery) 解决方案3(使用some()方法) 问题答案: JSON变量引用具有一个称为“名称”的属性的对象数组。我不知道最好的方法,但这就是我的工作吗?