我的网页上有许多列表,例如待办事项列表,购物清单等.我正在使用AJAX添加或删除项目.例如,对于待办事项列表,我的HTML就像:
name Delete
请注意,如果用户按下删除,那么我将删除该行.
我得到行的id,然后打破它以查找要执行的操作和要删除的id.
但我发现如果我使用firebug然后我可以动态地将id更改为任何数字,我发现通过编辑HTML可以删除任何id,即使不属于该用户.
我该怎么做才能防止这种情况发生?
我认为你将Javascript功能与安全性混淆.如果不允许您的用户删除AuntMarysShoppingList#32,那么无论客户端请求什么,服务器都不应该让他.
你可以混淆你的JS代码,但在某种程度上,你必须假设你的用户是一个诚实的经纪人,并且不会想要删除他们拥有的东西(通过黑客攻击JS的方式).无论如何都有权删除.
主要原则是" 永不信任传入数据 ".您从外部发送的任何数据都可以被操纵 - 参数,标题,引用,一切.一个好的和安全的系统不相信任何这些.
如果您有多个用户在同一个数据库上工作,您可能需要实现一个授权系统,该系统明确定义允许哪些人对哪条记录执行操作.
这通常使用某种基于会话的登录系统来完成,该系统基于PHP,Ruby,ASP或Perl等脚本语言之一.有预先构建的解决方案.
您需要在服务器端添加授权检查.请求是ajax还是其他方面是无关紧要的.