如何确定我网站的流量来源

时间:2016-04-18 23:16:01

标签: asp.net security

我有一个ASP.NET站点,我使用会话变量来跟踪管理员和业务成员的会话。我遇到过一个错误,如果管理员复制他们的URL并将其粘贴到电子邮件中,那么如果用户在点击之前从未登录过,那么他们将被重定向到以管理员身份登录的站点。这是一个非常大的安全问题。如何判断用户是否已从域外指向该站点,然后将其作为新成员重定向到该站点?

3 个答案:

答案 0 :(得分:1)

你能在会话变量和它的创建者ip之间创建一个映射吗?如果是这样,您可以验证会话变量的每次使用是否由其创建者ip执行。如果ips不同,请将其重定向为新成员

答案 1 :(得分:1)

令我惊讶的是,ASP.NET允许会话ID作为URL的一部分进行传输。这是非常不安全的。

正如您所注意到的,当您将会话ID作为URL的一部分包含在内时,任何复制和粘贴的URL都将包含该会话数据。您可以尝试解决此问题并确定用户是单击链接还是实际遍历该站点,但这些方法中的任何一种都可以被恶意用户抵制。

您可能会试图争辩用户不会将其网址发送给恶意用户。首先,用户会做很多愚蠢的事情,他们肯定会将URL复制并粘贴给其他人。其次,URL会被记录在整个地方,任何有权访问这些日志的人都可以使用。

在ASP.NET中处理会话的正确方法是通过会话状态cookie,它不会通过复制/粘贴传输或记录在不应该存在的位置。根据{{​​3}}页面,ASP.NET应默认使用cookie而不是基于URL的会话,因此您所做的事情似乎已经导致它们被使用。

将您的应用程序配置为使用基于Cookie的会话,而不是试图破解基于URL的会话。

答案 2 :(得分:0)

"您可以通过将应用程序配置为不回收会话标识符来减少会话数据的共享机会。为此,请将sessionState配置元素的regenerateExpiredSessionId属性设置为true。当使用过期的会话ID进行无cookie会话请求时,这将生成新的会话ID。"

https://msdn.microsoft.com/en-us/library/ms178581.aspx