【问题标题】:Which is the right approach to validate a mandatory field in front end or back end?在前端或后端验证必填字段的正确方法是什么?
【发布时间】:2016-08-13 11:52:23
【问题描述】:

我是后端开发的新手。我已经编写了更新用户信息的 API,其请求正文如下 -

{
   "id": 26,
   "email": "tom.richards@yahoo.com",
   "firstName": "Tommy",
   "lastName": "Richards",
   "photoUrl": null,
   "userAddress": [
        {
           "id": 8,
           "type": "home",
           "addressLine1": "DP Road",
           "addressLine2": "Main Street",
           "city": "Los Angel",
           "state": "CA",
           "country": "USA",
           "postalCode":915890
        },
        {
          "id": 25,
          "type": "office",
          "addressLine1": "Dr Red Road",
          "addressLine2": null,
          "city": "SA",
          "state": "CA",
          "country": "USA",
          "postalCode":918950
       }
    ]
}

理想情况下应该在前端[网站或电话]或后端[服务器端]或两者中验证地址类型[在我的情况下是家庭还是办公室]?哪个是验证地址类型的好方法?如果我们在后端验证它,会导致任何性能问题?

注意 - 如果开发人员传递任何字符串,将在 DB 中创建类似传递字符串的地址类型。

【问题讨论】:

  • 始终清理和验证服务器上用户输入的数据。任何前端验证纯粹是为了增强用户体验。您喜欢在前端使用验证数据的大多数网站,然后在数据到达服务器后再次验证。

标签: mysql json node.js restful-authentication


【解决方案1】:

对于后端验证它从任何 Web 请求获得的所有内容来说,这是一个很好的方法,因为您无法判断它是来自您的网站还是来自其他来源(甚至可能是一些恶意攻击)。后端必须保护自己并验证它所获得的一切。

最重要的是,在某些(如果不是全部)情况下,最好在前端进行一些验证,原因之一是如果您有一个知道后端将失败的请求 - 保存在您提出昂贵的请求之前,您自己会遇到麻烦并检查它

【讨论】:

  • 如果我们在后端验证地址类型,这会导致任何性能问题或需要更多时间来响应?
  • 它会,但这可能是一个非常快速的验证。另一方面,不验证和插入数据库失败可能会更慢(更不用说将错误的未验证数据插入数据库的选项)
  • 感谢您的建议。我一定会改进这一点。是否有任何标准文档或书籍可用于如何设计强大且良好的 API 和后端?如果有请指导。再次感谢您的宝贵建议。
【解决方案2】:

原因 前端验证:服务器上的验证,如果数据无效,用户必须等待响应。

后端验证:确保数据不会被入侵者更改。

Validate @database end : 像 Mongoose 一样提供内置和自定义验证。

根据要求,我们必须在用户配置文件更新之前交叉检查数据。

【讨论】:

    猜你喜欢
    • 2015-03-06
    • 2021-05-25
    • 1970-01-01
    • 2020-03-30
    • 1970-01-01
    • 1970-01-01
    • 2020-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多