【发布时间】:2019-01-06 23:16:19
【问题描述】:
我想知道是否可以操纵在前端完成的价格计算?我阅读了很多关于 JavaScript 价格计算器的文章,其业务逻辑仅在客户端,但对安全性一无所知。
考虑以下场景:
- React 应用有一个组件(表单),它根据其子组件(表单输入)的状态(用户交互)计算价格。
- 这些子组件的价格来自 API。
- 但是计算是由父组件在前端处理的。
是否可以通过表单发送经过处理的计算结果?
【问题讨论】:
-
有可能吗?当然。有没有可能走进商店告诉收银员你的一罐牛奶只卖 0.50 美元?确实。但是有像 UPC 代码这样的系统,希望您在服务器/支付网关上构建一个系统,以防止这种情况发生。
-
恶意用户可以使用代理工具动态修改 http 请求。在前端计算价格,但一定要在后端再次验证。
-
您绝不能盲目相信服务器收到的任何输入。客户端可以通过多种方式进行操作,或者替换为根本不使用您的表单/页面的代码,而只是将数据发送到相同的服务器 URL。可以在客户端作为 preview 进行计算,但仅限于此。
-
“永远不要相信客户”。不要相信客户在没有先验证的情况下发送给您的任何东西。如果他们说他们想要甜甜圈,请检查您实际提供的库存系统,并有可用的甜甜圈。不要问客户他们花了多少钱。
标签: javascript reactjs forms frontend calculator