WEB开发网
开发学院网络安全安全技术 关于web应用程序安全的思考(一) 阅读

关于web应用程序安全的思考(一)

 2008-11-26 13:35:59 来源:WEB开发网   
核心提示: 曾经有人设计过这样一个系统﹐要我尝试攻入其中某个已管控的页面中,它是这样做的﹐在每个要权限的aspx页面的page_load中判断Session["userid"]是否为null,如果不是﹐则转向登录页面,关于web应用程序安全的思考(一)(5),在我截获了网络上某个已

曾经有人设计过这样一个系统﹐要我尝试攻入其中某个已管控的页面中。

它是这样做的﹐在每个要权限的aspx页面的page_load中判断Session["userid"]是否为null,如果不是﹐则转向登录页面。

在我截获了网络上某个已登录用户和web服务器通讯的request和response之后﹐提取其cookie信息﹐交将它放入我的request请求中﹐我就以那个登录用户的身份执行了那支程序了。

但是这并不是说就不能使用cookie和session来作为认证的机制﹐我的意思是﹐web应用程序的安全也是相对的﹐必须建立在基本的网络安全和用户安全防范意识之上。可以采取包括加密会关键页面(如登录页面)的会话(例如使用https)或要求用户每次使用完系统后注销或关闭浏览器﹐以及尽可能多的对cookie和session做更多验证等。

在认证和授权的原理讲完后﹐要在asp.net应用程序中要完成上述的安全管控其实非常简单﹐设计一个httpmodule﹐然后捕获相关的事件﹐在这个事件中进行权限判断即可。

下面是一些框架代码﹕

1  /**//// <summary>
2  /// 使用HttpModule模组进行web权限管控
3  /// </summary>
4  /// <remarks>
5  /// 自定义一个HttpModule﹐并在AuthorizeRequest事件中完成授权动作
6  /// </remarks>
7  public class WebSecurityModule:IHttpModule
8  {
9
10
11
12    /**//// <summary>
13    /// 在AuthorizeRequest事件中,进行验证和授权
14    /// </summary>
15    /// <param name="context"></param>
16    public void Init(HttpApplication context)
17    {
18context.AuthorizeRequest += new EventHandler(OnAuthorize);
19    }
20      
21    /**//// <summary>
22    /// 调用PFSAuthorize类进行授权
23    /// </summary>
24    /// <param name="sender"></param>
25    /// <param name="e"></param>
26    /// <remarks>主要是看当前用户(包括匿名用户)是否拥有当前Request的url的权限</remarks>
27    public void OnAuthorize(Object sender,EventArgs e)
28    {
29      //认证﹕提取用户ID
30      string userid = getuserid();
31      //授权﹕判断用户ID是否有URL的权限
32       bool hasright = authroize(userid,HttpContext.Current.Request.Url);
33      if (!hasright)
34      {
35        //进行无权信息返回
36         //如转向无权登录页面
37         Response.Redirect("error.aspx");
38      }
39    }
40  }

最后我们只要将这个类封装成一个单独的DLL﹐然后在每个web.config的httpmodules节中配置即完成了安全管控

后面的文章我会讲如何设计这些模块达到最好扩展性

上一页  1 2 3 4 5 

Tags:关于 web 应用程序

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接