我不知道这是否是对话题或不在这里,但它是如此具体到我相信它更有意义在这里比在安全stackexchange网站.NET的WinForms。
(另外,它的严格安全编码有关,我认为这是作为话题的任何问题询问常见网站的漏洞,我看遍了网站。)
多年来,我们的团队一直在为网站项目威胁建模。 我们的模板的一部分包括了OWASP十大再加上其他著名的漏洞,这样当我们在做威胁建模,我们始终确保我们有一个文件的过程解决各通用漏洞。
例:
SQL注入(OWASP A-1)
- 标准规程
- 使用存储过程的参数化在可行情况下访问数据,其中可能
- 使用参数化查询,如果存储过程是不可行的。 (使用第三方数据库,我们不能修改)
- 逃逸单引号,只有当上述选项都不可行
- 数据库权限的设计必须以最小特权原则
- 默认情况下,用户/组都进不去
- 在开发,文件(表/视图/存储过程)需要每个对象的访问和业务需求进行访问。
- [剪断]
无论如何,我们使用了OWASP十大作为起点特定网站通常已知的漏洞。
(最后的问题)
在极少数情况下,我们开发的WinForms或Windows服务应用程序时,一个web应用程序不能满足需求。 我想知道如果有一个的WinForms应用程序通常已知的安全漏洞的等效列表。
关闭我的头顶,我能想到的几个....
- SQL注入仍然是一个问题。
- 缓冲区溢出通常由CLR防止,但更可能的,如果使用具有托管代码混合在非托管代码
- .NET代码可以被反编译,所以存储代码信息敏感,而不是在加密的app.config ...
是否有这样的列表,甚至几个这样的列表,从中我们可以借用来创建我们自己的版本? 如果是这样,我在哪里可以找到它?
我一直没能找到它,但如果有一个,这将是我们很大的帮助,以及其他的WinForms开发者。
有一个网络环境和桌面环境有很大的区别。 在开发网站和服务,你不相信的东西是用户(用户输入)。 当运行一个桌面应用程序,这是不信任的事情是应用程序本身,或至少,一个系统管理员想知道应用程序本身是否没有做任何伤害,因为代码在本地计算机上运行的是一个风险通过它自己。
因此,在某种意义上,你作为一个桌面应用程序的开发,安全规则并不总是适用的,因为你运行应用程序是不是一个黑盒子,而是一个白盒。 与Web服务/网站,您希望不能够改变内部状态的攻击,但与任何桌面应用程序(Java,.NET,原生),这是“很”容易改变应用程序的状态,而应用程序运行,特别是与Java和.NET,调试和反编译的应用程序是很容易的。
换句话说,你必须考虑的桌面应用程序完全破坏,如果这是有风险的,你必须提取的一切,必须是安全的(认证,授权,验证)到外部(网络)服务。 对于该服务,“正常” OWASP规则。
事情你应该看,是它真的很难完全保护您的数据层,当桌面应用程序直接连接到数据库。 例如,SQL注入是不是在这种情况下,您的桌面应用程序的一个问题,因为当应用程序可以直接连接到数据库,这样可以给用户。 而如果用户可以连接到数据库,他可以执行任意查询。 这是SQL注入的一种极端形式,但它完全跳过你的应用程序。
试图保护一个2层应用程序,往往意味着使用存储过程作为中间体(服务)层(并且防止向表直接访问)。 开发和维护存储过程是比开发一个.NET(网络)服务成本高得多。
也许你要调查该检查的安全漏洞现有的工具。 他们有时他们会检查缺陷列表。
还有在托管代码中所有可能的安全风险,因为开发人员可以打开各种孔。 该框架(.NET)是不是在它自己的风险,但开发商。
在这里,你有工具的列表,你可以看到他们在那里将检查哪些安全风险:
静态代码分析表
但是,当然,还有被称为vulnerabilies,你可以在这里看到:
的TechNet远程执行代码
特权的海拔的TechNet
有多种已知的和没有解决的缺陷,可以在著名的安全站点上找到。 (包括零天攻击)
**更详细的信息,这是我在评论中提到的清单**
MS安全检查表(不知道为什么,这是“退役”,因为这大多是中性的相关信息
开放Web应用安全项目
MS防跨站点脚本
MS ASP的安全参考实现(非常好的信息网站)
CAT.NET ...... MS静态安全分析工具
恐怕这是不可能建立一个当地的winform应用程序这实际上是安全的,因为用户总是可以破解你的应用程序。
但也有一些技巧来减缓裂解过程。 大多数技术发生聚集层,如垃圾代码和包装上。
另一种方法是使你的可执行代码随时间而变化(即进入正在执行的程序时内存即代码)。 然而,你必须首先确保所有其他代码(这是不那么执行)是安全的。 这可以通过加密来完成。 但你也必须确保加密程序更加高度安全。 加密程序总是固定在ROM中,并通过物理方法固定。
另一种方法是把网络的优势。 经常更新本地应用程序和禁止的旧版本。 这样一来,你的代码可能快速变化足以击败裂解过程。
哦...我会乱扔垃圾,或只是题外话? 我很抱歉。