码迷,mamicode.com
首页 > 其他好文 > 详细

关于启明星系统(OA系统,预定系统,请假系统等)安全性的说明

时间:2016-05-03 00:17:45      阅读:450      评论:0      收藏:0      [点我收藏+]

标签:

启明星系统推荐是安装在内网里,因此,系统采用了较为简单的身份验证。

事实上,在访问页面时,系统会判断当前cookie的uid是否大于0,如果是,则表示用户已经登录,否则表示未登录。

 

    public static int GetUserId
        {  
get { return (HttpContext.Current.Request.Cookies["userinfo"] == null) ? -1 : int.Parse(HttpContext.Current.Request.Cookies["userinfo"]["userid"]); } }

 

然后在母版master页面判断UserId是否大于0:

if (UserHelper.GetUserId > 0)
            {
               //已经登录
            }
            else
            {
                 Response.Redirect("login.aspx");
            }

 

对于内网来说,基本上安全性可以满足,但是对于放到公网的用户,就需要考虑攻击者可以很容易伪造cookie来绕过身份验证。

对于放到公网上的用户,请打开web.config里,增加如下红色配置。

将强制系统采用ASP.NET 系统内置的身份验证。

  <system.web>
    <authorization>
      <deny users="?"/>
    </authorization>
    </system.web>

 

-------------------------------------以上----------------------------------------------------------------------------------------------------------

 

对于放到公网上的用户,上面基本上能给很好的满足系统的安全性。不过可能希望系统自动记住用户登录名和密码。其实在我们的登录代码里

   HttpContext.Current.Response.Cookies[FormsAuthentication.FormsCookieName].Path = path;
                HttpContext.Current.Response.Cookies[FormsAuthentication.FormsCookieName].Expires = DateTime.Now.AddDays(7);

 可是你会发现,当增加了 <deny users="?" /> 后,系统似乎记不住cookie,基本上每次访问还是需要登录。

这是因为ASP.NET会在系统运行时,会自动生成随机的计算机密钥。

您可以通过如下方法,来强制ASP.NET使用唯一密钥。

打开IIS。左边选择你的应用程序。然后在右边找到计算机密钥

技术分享

 

从图中可以看到,在应用程序每次运行时,系统都随机生成一个计算机密钥。

单击右边的“生成密钥”

技术分享

 

单击应用

技术分享

 

此时,系统会自动在web.config增加machieKey密钥。这样,使用Form身份验证,就可以记住您的账户了。

技术分享

 

关于启明星系统(OA系统,预定系统,请假系统等)安全性的说明

标签:

原文地址:http://www.cnblogs.com/mqingqing123/p/5453480.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!