Asp.net 禁止用户直接访问站点页面的智能方法
一个站点有100个页面,遵循某个站点地图。用户可以从page1.aspx导航到page2.aspx。但是如果用户直接进入page2.aspx,比如说通过一个标有URL的书,那么用户应该被重定向到page1.aspx 编辑:我不想在需要满足这个需求的每个页面中添加代码Asp.net 禁止用户直接访问站点页面的智能方法,asp.net,webforms,Asp.net,Webforms,一个站点有100个页面,遵循某个站点地图。用户可以从page1.aspx导航到page2.aspx。但是如果用户直接进入page2.aspx,比如说通过一个标有URL的书,那么用户应该被重定向到page1.aspx 编辑:我不想在需要满足这个需求的每个页面中添加代码 注意:这不是跨页回发场景。我想你可以检查推荐人,如果没有推荐人,或者不是page1.aspx,那么你可以重定向回page1.aspx。我想你可以检查推荐人,如果没有一个或不是pGE1.ASPX,那么你可以重定向到PGE1.1. AS
注意:这不是跨页回发场景。我想你可以检查推荐人,如果没有推荐人,或者不是page1.aspx,那么你可以重定向回page1.aspx。我想你可以检查推荐人,如果没有一个或不是pGE1.ASPX,那么你可以重定向到PGE1.1. ASPX.
你可以考虑一些基于工作流的东西,比如:
WCSF团队还包含了一个可以作为应用程序独立添加的A.
您可以考虑基于工作流的一些东西,例如:
WCSF团队还包括一个可作为应用程序独立附加组件使用的标题。正如另一位回答者所提到的,您可以使用referer标题,但这可能是客户伪造的 因为您不想修改每个页面,所以可以使用。假设您有一些描述有效页面导航的方法,您可以在BeginRequest处理程序中执行以下操作:
- 检查会话中的有效页面列表(如果会话中没有页面,则使用默认的首次访问列表)
- 如果此请求是针对无效页面的,请重定向到用户应该所在的位置
- 根据此请求,在会话中设置有效页面列表并重定向页面,以便为下一个请求做好准备
- 检查会话中的有效页面列表(如果会话中没有页面,则使用默认的首次访问列表)
- 如果此请求是针对无效页面的,请重定向到用户应该所在的位置
- 根据此请求,在会话中设置有效页面列表并重定向页面,以便为下一个请求做好准备
Josh给出了最好的答案——在第2页,你应该检查页面点击日志,看看用户是否最近访问了第1页我最近使用了真实的代码,检查推荐人是否为空,并将其作为授权的一个步骤。这个想法是用户不能伪造推荐人,你不需要自定义浏览器来伪造推荐人。用户可以将您的页面标记为delicious,然后delicious.com是推荐人(而不是空白) 我已经就用户需要有多成熟才能进行某些黑客攻击进行过真正的争论——也就是说,如果用户不知道如何设置推荐人,那么您可以信任它。诚然,用户不太可能编写自定义浏览器,但是已经有Firefox插件来设置标题、引用等,而且它们很容易使用
Josh给出了最好的答案——在第2页,你应该查看页面点击日志,看看用户是否最近访问了第1页我喜欢上面的很多答案(特别是工作流) 另一个选项是将每个页面创建为usercontrol,并让page1.aspx控制加载的usercontrol。这样做的好处是将工作流存储在一个位置,而不是存储在每个页面上 然而,我不认为有什么灵丹妙药。听起来这个安全问题是事后才想到的,或者可能被报告为一个bug,您的任务是快速有效地修复它
我将在这里开始权衡答案,并在数小时内权衡相关成本。。我想最快的解决办法是检查每页上的推荐人地址。虽然可以破解,但它是模糊的,如果您可以接受这种风险,它可能是合适的解决方案。我喜欢上面的许多答案(特别是工作流) 另一个选项是将每个页面创建为usercontrol,并让page1.aspx控制加载的usercontrol。这样做的好处是将工作流存储在一个位置,而不是存储在每个页面上 然而,我不认为有什么灵丹妙药。听起来这个安全问题是事后才想到的,或者可能被报告为一个bug,您的任务是快速有效地修复它
我将在这里开始权衡答案,并在数小时内权衡相关成本。。我想最快的解决办法是检查每页上的推荐人地址。虽然可以进行黑客攻击,但它是模糊的,如果您可以接受这种风险,它可能是合适的解决方案。您是在会话上强制执行此操作(例如,用户拥有有效会话;他可以做任何他想做的事)还是您特别试图强制特定路径访问给定路径?选项2。。。“您特别试图强制特定路径访问给定路径”您是在会话上强制执行此操作(例如,用户拥有有效会话;他可以做任何他想做的事情)还是特别试图强制特定路径访问给定路径?op