为了账号安全,请及时绑定邮箱和手机立即绑定

如果数据已经经过清理,为什么还要验证数据?

如果数据已经经过清理,为什么还要验证数据?

PHP
慕田峪4524236 2023-10-15 15:41:38
我正在研究 php Rest api 后端的安全最佳实践。我在很多地方读到您应该清理和验证所有用户输入。根据我的理解,清理将从字符串中删除危险字符,而验证将保证值是服务器期望的值,就像字段名称是字符串一样。我了解安全清理作为避免 xss 攻击的一种方法的价值,但我不了解验证对安全性的好处。
查看完整描述

1 回答

?
开满天机

TA贡献1786条经验 获得超12个赞

数据清理是一个强制性过程,它会通过防止恶意代码注入来影响系统的安全性。

另一方面,数据验证是一个业务逻辑过程,它会影响数据的完整性。并不是每个系统都强制这样做,但是,不验证后端接收到的数据可能会导致不稳定。例如,在电子商务中,您可能有一张特殊的优惠券,只能适用于 65 岁以上的人。您的验证过程应在让用户申请优惠券之前检查用户的出生日期。这个逻辑应该在后端和前端重复。

前端是你的第一道防线,它不应该让用户执行任何非法操作。然而,前端只是一个向 API 发送请求的漂亮接口。如果 API 请求被逆向工程和操纵,则可以绕过在前端执行的任何检查和验证。

因此,即使您的前端不允许未达到要求年龄的用户激活优惠券,如果后端没有验证,对您的 API 特制的请求也可能能够使用优惠券。这就是数据验证的目的。即使数据已被清理并且 API 请求“看起来正常”(因为输入中不包含格式错误的数据类型或奇怪的字符),该请求也不应因业务需求而被接受,而不是出于安全原因。

但是,通过前端验证又有什么关系呢?好吧,我们通过显示漂亮的错误消息而不是通常不太花哨的 API 错误来获得更好的用户体验,并且如果预计请求会失败,我们还可以避免不必要的 API 请求和验证。

总之,数据验证是一个推荐的过程,它将带来更好的用户体验并防止数据完整性问题,这与系统安全性一样重要。


查看完整回答
反对 回复 2023-10-15
  • 1 回答
  • 0 关注
  • 53 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信