限制页面访问只能从特定页面进入?

时间:2011-04-20 19:14:33

标签: asp.net

我是ASP.NET的新手。

我想知道有没有办法限制用户只能从指定页面进入?

就像,我有一个页面A让他们输入一些信息,然后在提交时,我将使用Response.Redirect到页面B.但我不希望用户可以直接从URL进入页面B ...

如果我使用Session,那么如果用户没有关闭浏览器以结束会话,则另一个用户可以直接进入Page B ...

因为访问这些页面的计算机是由公众使用的,所以我想看看是否还有确保他们只进行单向处理?无法返回上一页或跳转到另一页。

先谢谢。

3 个答案:

答案 0 :(得分:0)

您可以在PageB的Page Load中使用Request.UrlReferrer属性来查看来自哪个页面的请求。如果请求不是来自PageA,则将用户重定向到PageA。

点击此链接了解详情:http://msdn.microsoft.com/en-us/library/system.web.httprequest.urlreferrer.aspx

注意: UrlReferrer依赖于请求标头,有人可以设置标头来模仿来自PageA的请求。

答案 1 :(得分:0)

如果您控制另一页,请启动会话并将会话变量设置为可以反转的值,只有您的服务器可以(或应该)创建,就像串行密钥一样。例如72150166因为每隔一个数字的总和等于每个其他数字的总和(7 + 1 + 0 + 6 = 2 + 5 + 1 + 6),但您可以选择一个复杂或简单的算法你要。当用户导航到第二页时,检查会话变量。这不是无敌的安全性,但它比检查引用者更好(特别是因为某些浏览器没有设置它),我想基于来自某个页面的安全性不一定非常严格。

编辑:您还应该将其添加到数据库并将其与特定用户的IP链接,以便其他人不能使用相同的密钥。

答案 2 :(得分:0)

您可以让重定向的页面在查询字符串中发送某种特定生成的哈希/密钥,该查询字符串会快速过期和/或一旦查看。这在安全方面应该更加稳固。

你仍然需要一些方法来存储产生哈希的这个键或值,这样你就可以在接收端验证它 - 我会认为你的数据库。