我有一个关于如何开发我的 Web 应用程序安全性的问题。假设所有的 javascript 代码都是公开的,并且任何人都可以直接进行任何 AJAX 调用,并且参数看起来很方便,那么任何直接修改数据库状态的调用都是非常危险的。
也就是说,诸如“changePoints”或“updateUserState”的调用允许恶意用户破坏例如游戏的逻辑并获得无限的金钱或积分。
我对这个问题的直观解决方案是设计将客户端与服务器通信的调用,因此通过其参数不可能破坏应用程序逻辑。在游戏示例中,像“buySomething”这样的调用是安全的,因为服务器将负责添加“某物”并减去它所花费的钱。两个调用 "addSomething" "changeMoney" 可以完成相同的任务,但由于显而易见的原因是不安全的。
我的怀疑源于这个推理导致我的结论:客户端 MVC 模式的模型部分似乎非常危险,特别是如果我们应用“活动记录”,因为 AJAX 调用与数据库服务器直接相关。此外,我的直观解决方案倾向于在服务器端开发大部分应用程序逻辑,这可能会变得乏味。
有什么我想念的吗?有更智能的解决方案吗?在客户端使用模型和活动记录是否不安全?
感谢您的关注和帮助。