UpdatePanel的性质

时间:2012-07-31 22:00:37

标签: c# javascript ajax security updatepanel

我对此处发表的另一篇文章的答案感到困惑: https://sharepoint.stackexchange.com/questions/40057/is-an-updatepanel-a-bad-decision/40412#40412

我的理解是,处理Button_Click的UpdatePanel与正常回发相比,在安全性方面没有做任何不同的事情。 UpdatePanel仍在进行完整的回发,它只是在UpdatePanel的范围内异步发生。

采取这种情况:

我正在处理一个upvote点击事件。我可以使用AJAX提交新的投票,也可以使用UpdatePanel中的Button_Click。 (理所当然地认为投票应该是异步的。对每次投票进行回发将是可怕的IMO)

为了避免投票作弊,我正在对一个项目和一个用户进行投票,因此在提交投票时我需要包含这两项内容。

使用AJAX,似乎这两个字段都很容易被黑客攻击,以至于某人可以获得一系列用户名并在短时间内运行提交数百票的循环。

使用UpdatePanel,我至少可以获取当前用户服务器端的标识,而不会将任何项目创建方法暴露给Web服务。

这不是从根本上更安全吗?我是否误解了UpdatePanel的工作原理?

1 个答案:

答案 0 :(得分:2)

从安全角度来看,UpdatePanel确实与回发相同。这只是输出部分渲染的问题。

现在,关于你的情况:

采用纯粹的ajax方法不会以任何方式危害安全性。仅仅因为它是javascript并不意味着你被迫开放作弊,实际上是在你的请求中接收用户作为参数。这就是你拥有身份验证,cookie等等。使用Principal and Identities从进入的请求中识别用户。

为简化起见,您可以使用UpdatePanel和AJAX安全实施。

注意:AJAX不会强制您在安全实现之外公开Web服务,服务器上的端点确实可能只是MVC ControllerHttpHandler等等。