2012-07-31 54 views
3

我在另一篇文章我在这里做糊涂由一个答案: https://sharepoint.stackexchange.com/questions/40057/is-an-updatepanel-a-bad-decision/40412#40412自然UpdatePanel的

我的理解是,一个UpdatePanel处理一个Button_Click没有做任何事情,从安全角度来看,比正常的回发不同。 UpdatePanel IS仍在进行完整的回发,它只是在UpdatePanel的范围内异步发生。

以下情景:

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

为了避免投票作弊,我绑定了投票项目和用户,所以在提交我需要包括这两件事的投票。

使用AJAX,看起来好像这两个字段都很容易被黑客攻击,以至于有人可以获得一组用户名并运行循环,在短时间内提交数百张投票。

使用UpdatePanel,我至少可以拉取当前用户服务器端的身份,而不会将任何项创建方法公开给Web服务。

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

回答

2

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

,对于您的情况:

做一个纯粹的Ajax方法不会损害任何方式的安全性。只是因为它的JavaScript并不意味着你被迫开放作弊,通过实际接收用户作为请求中的参数。这就是你有认证,cookies等。从进入的请求中识别用户,使用Principals和Identities。

为了简短起见,您可以通过使用UpdatePanel和AJAX来实现安全实施。

注意:AJAX并不强迫你暴露你的安全实现的web服务外,在服务器上的端点确实可以只是一个MVC Controller,一个HttpHandler

+0

谢谢!我希望我不疯狂:)一个HttpHandler是否可以访问会话数据? WebServices的问题往往是他们通常无法可靠地访问身份验证来进行这种区分。 – Wesley 2012-08-01 22:37:53

+0

没问题。哦,关于会话使用,你可以使用它。检查了这一点:http://stackoverflow.com/questions/1106776/how-to-use-asp-net-session-state-in-an-httphandler。你基本上必须使用IRequiresSessionState – 2012-08-02 13:59:04