2012-03-12 92 views
1

上午认证逻辑的故障是否会有人能够告诉我,如果我在这里失去了一些东西,因为它似乎有点太好,不真实。我使用类似的方式验证用户;安全认证与ASP.net

 if (validateUser(form.Email, form.Password)) 
     { 
      return signIn(form.Email); 
     } 

validateUser函数返回一个布尔值。登录然后做这样的事情;

public void signIn(string email) 
    { 
     FormsAuthentication.SetAuthCookie(nameOfUser, false); 
    } 

随后又将让我对未来所有的请求做这样的事情;

string userEmail = User.Identity.Name; 
Profile p = Profile.getProfileFor(userEmail); 

这似乎有点太简单,不安全!有什么我在这里失踪/任何盲目明显的安全风险?或者这基本上是如何完成的?

问候,

迈克

+0

是什么让你认为这是不是安全? – 2012-03-12 10:12:07

回答

2

有这么多你可以用安全办:

  • 加密密码
  • 日志每次登录尝试使用IP地址来识别攻击
  • 使用整数标识列,而不是电子邮件:

    这将使应用程序更精简和更快。

    如果您使用数字而不是电子邮件,黑客会更难将信息(用户)与黑客联系起来。用户只需通过电子邮件就可以学到很多东西

  • 缓存身份
  • 使用角色
1

也就是说它是如何做的,正确的。

唯一需要注意的安全风险与所有表单帖子相同,因为最终用户输入到浏览器中的所有值均以纯文本形式(包括密码)发送回服务器。因此,这暴露了某人尝试嗅探密码流量的可能性,您可以使用https来解决该问题。

2

理论上你应该使用HTTPS来避免中间人攻击,但这不是代码中的事情。此外,如果您按照应该的方式对密码进行哈希处理,则不会从您的代码中明显看出。

顺便说一下.NET的约定是使用PascalCase来获取方法名称。