动态网站制作指南



当前位置 > 网站建设学院 > 网络编程 > ASP.NET技巧 Rss
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket

学习一下.net framework 中有关安全的内容


发表日期:2006-4-7


  好容易在繁重的开发任务之余抽出点时间学习一些东西。发现机子里有几个关于 System.Security 内容的示例,这一个命名空间以前还真是从来没用过,正好拿来学习一下。由于不是系统的学习,不好组织,想了想,就以示例来说明吧。 

  一、设定权限

1[FileIOPermission(SecurityAction.Demand, Write= "C:\\temp.txt")]
2public class App : System.Windows.Forms.Form
3{
4    //略
5}
  FileIOPermissionAttribute 定义于 System.Security.Permissions 里。它继承于 SecurityAttribute,在这个例子中,要求使用 App 类时必须具有对 C:\temp.txt 文件的写权限。

  .net framework 的文档中关于安全要求有这样一段话:“若要确保只有被授予了指定权限的调用方才能够调用您的代码,可以声明方式或强制方式要求您的代码的调用方拥有特定的权限或权限集。要求使运行库执行安全检查,从而对调用代码实施限制。在安全检查过程中,运行库遍历调用堆栈,检查堆栈中每个调用方的权限,然后确定是否已将要求的权限授予每个调用方。如果发现某个调用方没有要求的权限,则安全检查失败,并引发 SecurityException。”

  例子中,权限是以声明的方式出现的。SecurityAction.Demand 可以作用于类或方法,在这里是作用于类上。Write 是 FileIOPermission 的属性之一,其它常用属性还有 Read、Append、All 等等。

  SecurityAction 枚举中还有一些值是作用于 assembly 上的。比如以下的例子:

[assembly:SecurityPermission(SecurityAction.RequestMinimum ,UnmanagedCode=true)]
  SecurityAction.RequestMinimum 是请求运行的最小权限。这一行要求程序集允许调用非托管代码。

  除了声明方式外,还可以使用强制方式。如下的代码:

 1FileIOPermission filePerm = new FileIOPermission(FileIOPermissionaccess.AllAccess, "C:\\temp.txt");
 2try
 3{
 4    filePerm.Demand();
 5   
 6    // Code to access file goes here
 7}
 8catch (SecurityException excep)
 9{
10    MessageBox.Show (excep.Message);
11    return;
12}
13
  二、用户角色管理

  用户及其角色的管理是在许多程序中都要使用到的。如今 asp.net 2.0 对于这方面有了大大增强,开发人员不需要很了解技术就可以做出很不错的应用。不过对于 Windows Form 应用程序来说,不少地方还需要程序员自己设定。

  假定我们已知晓了 userName 以及它所属于的 roles,那么可以这样来设置当前线程的 PRincipal:

1GenericIdentity genIdent = new GenericIdentity(userName);
2GenericPrincipal genPrin = new GenericPrincipal(genIdent, roles);
3Thread.CurrentPrincipal = genPrin;
4
  随后我们有三种办法来进行用户角色验证。

  第一种方法是使用 GenericPrincipal.IsInRole 方法:

1GenericPrincipal currentPrin = Thread.CurrentPrincipal as GenericPrincipal;
2
3if (currentPrin != null && currentPrin.IsInRole("Manager"))
4{
5    //略
6}
7
  第二种方法则是使用 PrincipalPermission 类,类似于权限设定中的强制方式:

 1PrincipalPermission prinPerm = new PrincipalPermission(null, "Manager");
 2
 3try
 4{
 5    prinPerm.Demand();
 6
 7    //do something
 8}
 9catch
10{
11    //error handling
12}
  第三种方式则类似于权限设定中的声明方式:

 1private void DecPermButton_Click(object sender, System.EventArgs e)
 2{
 3    try
 4    {
 5        performManagerAction();
 6        // do something
 7    }
 8    catch
 9    {
10        // error handling
11    }
12}
13
14[PrincipalPermission(SecurityAction.Demand, Role="Manager")]
15void performManagerAction()
16{
17}
  关于安全的另一个重要内容是加密。今天没空写了,改天再说。

关注此文的读者还看过:
·2012-5-21 15:56:40 为ASP.NET封装的SQL数据库访问类
·2012-5-21 15:56:30 ASP.net:Literal控件用法
·2012-5-21 15:55:49 设置上传文件的最大大小
·2012-5-21 15:55:45 在ASP.NET中如何用C#.NET实现基于表单的验证
·2012-5-21 15:55:29 ASP.NET 1.1 没有出现在 IIS 6.0 中的 Web 服务扩展列表中的解决方法
·2012-5-21 15:55:15 bcp将本地txt文本导入远程sqlserver中,本地未装sqlserver
·2012-5-21 15:55:01 使用ASP.NET Image Generation生成图片缩略图及水印
·2012-5-21 15:54:07 用ASP.NET/C#连接Access和SQL Server数据库
·2012-5-21 15:52:56 ASP.Net中无法用javascript实现图片随屏幕移动的解决办法
站长推荐 PS笔刷下载 在线翻译 系统进程 广告代码
  发表评论
姓 名: 验证码:
内 容:
教程搜索服务
Asp.net源码推荐
·SmartControls控件扩展Demo源码
·LINQ的增删改查源码 v0.1
· Discuz!NT v3.6.601 build 0714
·启明快递运输管理系统源码
·Asp.net弹出对话框控件汉化修正
·都市网络新闻中心系统源码
·HHFeditor在线编辑器 v3.0
·酒店管理系统(三层开发)源码
·网博留言版 v1.0
·AJAX的高效聊天室源码
·使用Ajax和Jquery实现GridView的
·开源淘宝客淘货网 v2011
项目外包信息
·汽车配件网站制作 50000元
·整站SEO优化
·课件门户网程序
·求长期合作网站设计制作高手
·公司网站重新改版 8000元
·asp企业网站小改动
·网站flash片头
·文化传播公司网站设计稿
·UI界面设计
·产品外观改版设计 15000元
·照明灯具网站设计 10000元
·求长期合作网站设计制作高手
·做B2C网站 20000元
·Android或QT软硬件平台设计(工
·网站首页FLASH
发布信息 浏览信息
邮件订阅服务
输入你的邮件地址,你将不会错过任何关于<ASP.NET技巧>的内容


网络编程文章分类
ASP教程
ASP实例
ASP技巧
ASP文摘
PHP教程
PHP技巧
PHP实例
PHP文摘
JSP教程
JSP技巧
JSP实例
JSP文摘
ASP.NET教程
ASP.NET技巧
ASP.NET实例
ASP.NET应用
xml教程
xsl教程
xml技巧
C#教程
C#应用
Delphi教程
Perl教程
Shell教程
Ajax教程
Visual Basic教程
Java教程
J2EE/J2ME教程
C/C++教程
移动解决方案
移动短信技术
移动行业动态
软件工程
WordPress
Android开发
站长工具:Google PR查询|Alexa排名查询|网站速度测试|CSS在线编辑器|OPEN参数生成器|弹出式窗口代码产生器|密码登录生成器|在线按钮生成器|Meta标签生成器|邮箱图标在线生成|多色彩特效字代码生成器|网页代码调试器|在线FTP登陆|Flash取色器|配色代码对照表|配色辞典|CSS生成器|CSS在线压缩|广告代码|框架网页代码生成器|js/vbs加密|md5加密|进制转换|UTF-8 转换工具|在线调色板|Html转换js|Html转换asp|Html转换php|Html转换perl
实用工具:汉字翻译拼音|拼音字典|在线翻译|天气预报|火星文|在线网速测试|符号对照表|个税计算|理财工具|黄金价格|购房银行按揭利率计算|汇率查询|经典小工具|汉字简繁转换|普通单位换算|公制单位换算|生辰老黄历|国内电话区号|国家代码与域名缩写|文字加密解密|元素周期表|健康查询|世界时间|全国各地车牌查询|全国车辆交通违章查询|万年历|二十四节气|汉字横竖排版|手机号码查询|计算器|ip搜索|酒店预订|机票预订
广告刊登 | 版权声明 | 联系我们 | 加入收藏 | RSS订阅
Copyright © 2000-2012 www.knowsky.com All rights reserved | 沪ICP备05001343号