Writing Secure Code In CSharp

Writing Secure Code using CSharpSubmitted ByUser LevelDate of SubmissionC.Vinodh KumarIntermediate04/06/2001
Mobile Code, which come from various sources like e-mail, documents and downloaded code over the Internet are the main cause for the damage, destroy or copy private data. So to help protect computer systems from malicious mobile code and to provide a way to allow mobile code to run safely, the .NET Framework provides a security mechanism called code access security .
Code access security is a mechanism that controls the access code has to protected resources and operations. NET Framework, code access security performs functions like Defining Permission, Enables administrators to configure security policy, Allows code to request the permissions it requires in order to run, Grants permissions to each assembly that is loaded, based on the permissions requested by the code and Enables code to demand that its callers have specific permissions.
Code access security is a mechanism that grants/denies access to resources within a method call. For example, code written by a person may be allowed to write to the disk while code from another one may be forbidden from accessing the disk. This control can be enforced even if the code written by both of them is used within a single application.
System.Security Namespace Provides the underlying structure of the .NET Framework security system, including interfaces, attributes, exceptions, and base classes for permissions and CodeAccessPermission class defines the underlying structure of all code access permissions.
Let see a sample application, which attempts to access a disk file and an environment variable .
Code shown below will create permission to set read access to Temp environment and full access to some files. Before changing every file will be have a default permission set.
  
         // Create a permission set that allows read access to the TEMP
         // environment variable and read, write, and append access to SomeFile from
        //default permission
        PermissionSet ps = new PermissionSet(PermissionState.None);
         ps.AddPermission(
            new EnvironmentPermission(EnvironmentPermissionAccess.Read, "TEMP"));
       //adding various type of file level permission
         ps.AddPermission(
            new FileIOPermission(FileIOPermissionAccess.Read |
                FileIOPermissionAccess.Write | FileIOPermissionAccess.Append,
                "SomeFile"));
         // Make the permissions indicate all that we're allowed to do.
        ps.Assert();

PermissionSet class (in System.security) represents a collection and it contains many different kinds of permissions, and supports the methods that use and modify those permissions. We can add, remove, assert, deny and copy permission.
        // Deny access to the resources we specify
        ps.Deny();      
  // Make the permissions indicate the only things that we're allowed to do.
        ps.PermitOnly();
        // Remove the FileIOPermissions from the permission set
        ps.RemovePermission(typeof(FileIOPermission))
// Remove the EnvironmentPermission from the permission set
        ps.RemovePermission(typeof(EnvironmentPermission));
Deny method prevents callers from accessing the protected resource even if they have been granted permission to access it. PemitOnly Ensures that only the resources specified by this permission object can be accessed, even if the code has been granted permission to access other resources. FileIOPermissionAccess specifies the actions that can be performed on the file or folder. EnvironmentPermission Class as the ability to query and modify system and user environment variables.
Conclusion:We have seen how to write a secure code using the publicly available .Net SDK. Although what I have shown you is simple in functionality you can even create your own code access permission and much more advance security futures in you code.

Source Code:  codesecureusingCSharp1.zip 2k

时间: 2024-10-30 20:04:47

Writing Secure Code In CSharp的相关文章

读取XML为行记录

xml 1 declare @x xml2 set @x='<book genre="security" publicationdate="2002" ISBN="0-7356-1588-2">3   <title>Writing Secure Code</title>4   <author>5      <first-name>Michael</first-name>6  

Microsoft SQL Server 2005 中的 XML 支持(1)

本文探讨 SQL Server 2005 中内置的 XML 支持.描述了这种支持如何与 .NET 框架 V2.0 和本机代码(例如 OLEDB 和 SQLXML)均支持的客户端编程相集成. 一.简介 可扩展标记语言 (XML) 作为一种与平台无关的数据表示形式已被广泛采用.它对于在松散耦合且完全不同的系统,以及各种企业到企业 (B2B) 应用和工作流范畴内交换信息是很有用的.数据交换已成为 XML 技术的主要驱动力之一.. XML 在企业应用程序中的使用正日益广泛,它主要用于对半结构化和非结构化

分享十位顶级PHP开发工程师的开发原则

我要晕了,到底我要听谁的? 在Web开发世界里,PHP是最流行的语言之一,从PHP里,你能够很容易的找到你所需的脚本,遗憾的是,很少人会去用"最佳做法"去写一个PHP程序.这里,我们向大家介绍PHP的10种最佳实践,当然,每一种都是经过大师们证明而得出的. 1. 在合适的时候使用PHP – Rasmus Lerdorf 没有谁比PHP的创建者Rasmus Lerdorf明白PHP用在什么地方是更合理的,他于1995年发布了PHP这门语言,从那时起,PHP就像燎原之火,烧遍了整个开发阵营

利用 ASP.NET 的内置功能抵御 Web 攻击

asp.net|web|攻击 摘要: Dino 总结了最常见的 Web 攻击类型,并介绍了 Web 开发人员可以如何使用 ASP.NET 的内置功能来改进安全性. 一.ASP.NET 开发人员应当始终坚持的做法 如果您正在阅读本文,可能就不需要再向您灌输 Web 应用程序中的安全性愈来愈重要这一事实了.您需要的可能是一些有关如何在 ASP.NET 应用程序中实现安全性的实际建议.坏消息是,没有任何开发平台 - 包括 ASP.NET在内 - 能够保证一旦采用了该平台,您就能够编写百分百安全的代码.

在Struts 2.0中实现表单数据校验(Validation)

在写前几篇文章的时候,有些朋友建议我的写一篇关于表单数据校验的文章. 正如文章的开头所引用的<Writing Secure Code>的名言:"所有的输入都是罪恶的",所以我们应该对所有的外部输入进行校验.而表单是应用程序最简单的入口,对其传进来的数据,我们必须进行校验. 转换与校验(Conversion & Validation) 其实上篇文章,我本来是打算写表单数据校验的内容,但是经过再三思考后,还是决定先写Struts 2.0转换器的内容.原因是我认为转换是校

深度探索编译器安全检查

安全是高质量软件的重点关注方面,最让人害怕.最多被误解的就是缓冲区溢出.现在,提及缓冲区溢出足以让人们停下来,仔细听.太频繁了,技术细节丢失在抄本中,大部分人们对于这种基础的.值得关注的方面离开了.为了解决这个问题,Visual C++ .NET引入了安全检查来帮助开发者确定缓冲区溢出. 什么是缓冲区溢出?    缓冲区是一块内存,通常是数组的形式.当没有校验数组的长度时,可能会写出缓冲区的边界.如果这样的行为发生的地址比缓冲区的内存地址高,称为缓冲区溢出:类似的,如果这样的行为发生的地址比缓冲

《威胁建模:设计和交付更安全的软件》——2.4 软件模型

2.4 软件模型 建立清晰的软件模型有助于寻找威胁,否则你会陷入到软件功能正确与否的细节中.图表是软件建模的最佳方法. 正如你在第1章学习到的内容,在白板上绘制图表是开始威胁建模非常有效的方法,但是当一个系统特别复杂,在白板上绘制或重新绘制模型就变得不可行了.这时,你要么简化系统要么使用计算机化的方法. 本章,你能学习到各种图表,在威胁建模时如何使用各种图表.如何处理大型系统威胁建模的复杂性.你也能学到信任边界.有效标签,以及如何验证图表等更多细节内容.2.4.1 图表类型 做图表有很多方法,不

国外PHP大师的10条开发原则

1. 在合适的时候使用PHP – Rasmus Lerdorf 没有谁比PHP的创建者Rasmus Lerdorf明白PHP用在什么地方是更合理的,他于1995年发布了PHP这门语言,从那时起,PHP就像燎原之火,烧遍了整个开发阵营,改变了互联网的世界.可是,Rasmus并不是因此而创建PHP的.PHP是为了解决WEB开发者的实际问题而诞生的. 和许多开源项目一样,PHP变得流行,流行的动机并不能用正常的哲学来进行解释,甚至流行得有些孤芳自赏.它完全可以作为一个案例,一个解决各种Web问题的工具

对错误,漏洞和exploits的说明_安全相关

作者:Mark Vogels  翻译:黯魂[S.S.T]  在这篇文档中,我将会试着为你提供一个对于错误,和由于那些错误而产生的漏洞以及它们的exploits的基本认识.那决不意味着能让你完全理解exploits和漏洞,但是能帮助你学会认识可能的漏洞以及怎样处理它们.  一般而言有3种不同类型的错误会可能危及计算机系统和网络的安全.  #编程错误  #配置错误  #设计错误  错误可以被看成是失误,尽管它们并非都是由事故导致的.软件/设备的最初创建者可能就存在错误,用最好的想法却创建了错误,并且