问题描述
我刚刚了解到可以使用某些浏览器附带的开发人员工具来操纵网站的前端代码。现在,我的问题是,如果有人可以操纵我的js,HTML和CSS代码以适合他们的需要,并且能够将请求发送到我的网络服务器,则服务器将接收该请求并将其作为经过身份验证的请求进行处理。让我找到一个合适的例子:
假设我创建了一个表单,该表单使用ajax从Web服务器检索一些信息,该表单中有一个隐藏的输入,其中包含确定将要显示的信息的数字(例如1应该为1级用户显示信息, 2应该显示2级用户的信息)。隐藏输入的默认值为1,现在,如果用户(级别1)能够调整前端代码并将其设置为2,然后再发送,他将接收到级别2的信息。
如果可能的话,如何防止此类事情发生,或者处理这种情况的标准程序是什么?
解决方法
在这种情况下的典型规则是:
- 验证
- 验证
- 验证
不要完全信任客户端以告诉您他们是否具有许可。您应该具有确定在服务器端使用它的信息。 验证客户端请求,并确保正在请求操作的用户实际上具有执行此操作的权限,并且他们正在发送的数据有效。 当然,您可以通过客户端验证来获得良好的UX体验,但是始终通过服务器端验证,身份验证和授权来支持它。
防止出现这种情况的最佳方法是:不要发送不应让他们看到的客户端数据,然后依靠客户端将其隐藏。如果用户不该看到它,请不发送。