使用cookie来阻止访问站点中的某些非安全页面

时间:2009-02-22 23:49:35

标签: asp.net

如果我有一个小型微型网站,并且在第一页上我想确保用户无法跳转到(例如2或3)之间的非安全页面,那么实现此目的的最佳方法是什么?只有当用户在下拉框中设置某个项目时,才能看到下一页。

我的第一个念头是饼干。如果用户转到第二页并且cookie的值为null,则会重定向到失败页面。如果用户选择了正确的值,则cookie的值将设置为成功。如果我将第二页上的链接发送给另一台PC上的朋友,这种方法是否有效?

有更好的方法吗?

3 个答案:

答案 0 :(得分:0)

便宜,羽毛和肮脏? cookie或会话值有效。两者都不可靠。

如果您这样做,用户只能在选择下拉菜单后看到某些信息,您可以将其隐藏在面板中,并仅在选择下拉列表时显示该面板。如果您不介意用户每次都必须从下拉列表中进行选择,这是最有用的。如果您希望用户能够在不选择下拉列表的情况下查看数据,您也可以将其与c​​ookie一起使用。

隐藏在同一页面中(在一个面板中下拉,在另一个面板中隐藏),您可以永久隐藏它。

如果这必须是第二页,您也可以将该页放在另一个目录中,然后在其中放入一个需要登录的web.config文件。然后您可以将其设置为“登录”“登录“每个回答的人。您最终使用了Membership位,但它们并没有连接到任何东西。

答案 1 :(得分:0)

出于某个特定原因,Cookie不是一个好主意。它们在用户的控制之下,而不是你。

如果用户已禁用Cookie(全局或仅适用于您的网站),则无论他们阅读第1页多少次,他们都无法访问第2页。

此外,如果他们知道你的cookie包含什么(即,它没有加密),他们可以轻松地自己创建它或将方法转发给朋友,让他们创建它。

关于您是否可以将第2页链接发送给其他人的问题,Cookie属于计算机。这意味着“别人”几乎肯定没有正确查看第2页的正确cookie:他们会收到错误。

我们实施了类似的计划(很多年前,所以现在可能有更好的方法)。它涉及在将第1页传送到IP地址时存储特殊的“一次性”密钥。修改了第1页中的链接以将此密钥作为参数包含在内,这样,当您请求第2页时,密钥也会被发送。

密钥的使用寿命为30分钟(可配置但最终为30分钟)。为了让我们提供第2页,请求必须来自相同的IP地址并拥有正确的密钥。

这阻止了将链接转发到其他地方并确保链接的生命周期有限。

这是否是一个可行的解决方案是一个只有你可以回答的问题。我知道我们收到了一些购买第1页的人的投诉,然后出去喝咖啡。当他们回来时,他们尝试访问第2页是不成功的。我们通过简单地将它们重定向到第1页并使用其键已超时的合适错误消息来修复此问题。

不完美,但是,由于用户接受了教育的原因,他们了解其必要性。

答案 2 :(得分:0)

如果我正确理解您的问题,那么您发送给朋友的链接将无法正常工作,因为他们不会将Cookie存储在浏览器内存或计算机上。如果您将值存储在Session中,因为他们在打开链接时将创建自己的新会话,这也是如此。

要在共享链接时获得此类行为,您需要在查询字符串中传递值,即当您在第1页上选择所需选项并对该表单进行子选择时,回发将采用所选选项,然后使用选项重定向到第2页附加到url作为查询字符串值。