我想创建一个类似于Stack Overflow的网络应用程序,因为用户将拥有不同的“点”级别,并且他们在网络应用程序中的功能将根据他们的积分水平而有所不同。
问题:如何才能最好地实施?如何以不可攻击的方式实现(即访问不可用的功能)?
我认为有两种方法可以做到这一点:服务器端和客户端。对于服务器端解决方案,对于每个页面请求,您可以检查用户是谁并让CGI重写页面,以便客户端只获取具有预期功能的网页。对于客户端解决方案,服务器为客户端提供功能完备的应用程序,客户端的工作是检查点级别并适当地阻碍应用程序。
似乎客户端解决方案在服务器上会更容易(这对我的应用程序非常重要),但更容易受到黑客入侵和使用其点级无理由的功能。
答案 0 :(得分:3)
假设您想将downvoting限制为超过125分的人。
在服务器端代码(非客户端JavaScript)中:
原因是您cannot trust the client(对于Web应用程序,Web浏览器)。有兴趣打败只存在于客户端的锁定的人可以使用Greasemonkey或Wireshark这样的软件轻松完成。
答案 1 :(得分:1)
客户端解决方案将更容易实现性能和扩展,但为了安全起见,这非常糟糕。在用户的机器内部,他们可以破解它。这是理论。他们可以使用像Wireshark这样的嗅探工具来查看将发送到您的服务器的内容并模仿该过程
答案 2 :(得分:1)
您可能需要在服务器端进行检查。请注意,您应该检查两个:
如果您不同时执行这两项操作,则用户将发现如何告诉服务器执行他们不应该执行的操作。
答案 3 :(得分:0)
我认为您将不得不使用驻留在服务器上的大部分逻辑和用户的cookie,这有望帮助降低服务客户端的一些复杂性。
答案 4 :(得分:0)
就像其他人所说,如果你想要安全性,你需要在服务器端做特权。如果您将每个用户的权限存储在数据库中,我认为您不会看到糟糕的性能。然后,当用户提取页面时,您执行查找,检查权限并相应地呈现页面。