0

我有一个用户数据库,我可以通过 Web 服务访问该数据库。Web 服务方法之一是这样的:

public void login(string name, string password, out user_key)

在我的控制器中,我想做这样的事情:

String key = repo.login(username, password); // a wraper on the login method
if(key ....)
    FormsAuthentication.SetAuthCookie(username, false); 

我的问题来了:这个密钥用于检索特定的用户数据。我将密钥放在哪里,以便我可以访问它?我的意思是 FormsAuthentication 类有一个方法,因为这样说: Session["key"] = key 对我来说看起来不是一个好习惯。这里有什么好的做法?这样坏人就不会入侵我的会话。

4

2 回答 2

1

不太明白你的意思

Session["key"] = key 对我来说不是一个好习惯

我一直在使用类似Controller.HttpContext.Session的东西最长的时间,一点也不感到内疚。

如果您想担心被黑客入侵,那么您应该确保在将 GET 参数传递到数据库之前对其进行了适当的清理。这很重要。

于 2009-11-16T15:23:05.943 回答
0

会话与 ASP.NET 中的身份验证 cookie 是分开的,因此为了接管会话,攻击者必须复制身份验证 cookie 和会话 cookie。

您可以使用在生成用户数据之前接受用户数据的构造函数之一将用户信息写入身份验证票证的一部分,然后通过用户数据属性读取它。请注意,如果此用户密钥是敏感的,那么您可能需要加密身份验证 cookie。这是 ASP.NET 中的默认设置,但值得具体说明

<forms protection="All" >

进入你的 web.config

于 2009-11-16T15:24:48.467 回答