我正在尝试在C#中构建一个SharePoint应用程序,该应用程序将包含一个带有upvote / downvote系统的小组件。
这似乎有问题。如果我想让它变得安全,我会使用服务器端代码进行投票,但这听起来像是糟糕的用户体验。
使用AJAX,用户体验要好得多,但你很容易受到攻击。
我看到的主要漏洞是为用户分配投票。我假设任何接口(让我们假设Ajax to List)这些都是用JavaScript设置的变量。
在浏览器中启动任何JS控制台并为帖子/问题提交投票似乎非常容易。
除非我想在page_load(很多额外周期)上验证对用户名的每一次投票,否则我觉得我只限于在更新面板中嵌套转发器,并处理该函数内部的投票,生成SPUser标识服务器端。
任何使用嵌套在带有按钮的更新面板中的转发器的人都会证明这是一场噩梦:(
我的替代方案是什么?
答案 0 :(得分:1)
使用客户端变量的漏洞始终是一个问题,因此最好通过服务器端参与来降低利用漏洞的可能性。
您可以创建一个函数,该函数使用一个键来创建仅为当前用户创建的投票参数。如果传递的参数已经以任何方式被修改,即与预期的输出不匹配,则拒绝它。如果需要,您可以构建阻止特定用户投票的功能,如果他们已超出格式错误请求的阈值。
然后,您可以在提交时确定当前用户是否已经对相应项目进行了投票以防止重复投票,但我会阻止用户首先投票以获得更好的用户体验。