gpt4 book ai didi

.net - WinForms 应用程序的常见漏洞

转载 作者:行者123 更新时间:2023-12-04 00:25:52 29 4
gpt4 key购买 nike

我不确定这是否是主题,但它是如此特定于 .NET WinForms,我相信它在这里比在 Security stackexchange 站点更有意义。

(此外,它与 安全编码 严格相关,我认为它与我在整个网站上看到的任何关于常见网站漏洞的问题一样热门。)

多年来,我们的团队一直在对网站项目进行威胁建模。我们模板的一部分包括 OWASP前 10 名以及其他众所周知的漏洞,因此当我们进行威胁建模时,我们始终确保我们有一个记录在案的流程来解决这些常见漏洞中的每一个。

例子:

SQL 注入(inject) (Owasp A-1)

  • 标准实践
  • 尽可能使用存储参数化过程来访问数据
  • 如果存储过程不可行,请使用参数化查询。 (使用我们无法修改的第 3 方数据库)
  • 仅当上述选项不可行时才转义单引号
  • 数据库权限必须按照最小权限原则设计
  • 默认情况下,用户/组没有访问权限
  • 在开发过程中,记录每个对象(表/ View /存储过程)所需的访问权限以及访问的业务需求。
  • [剪辑]

  • 无论如何,我们使用 OWASP Top 10 作为网站特定漏洞的起点。

    (最后是问题)

    在极少数情况下,当 Web 应用程序不能满足需求时,我们会开发 WinForms 或 Windows 服务应用程序。我想知道是否有 WinForms 应用程序的常见安全漏洞的等效列表。

    在我的头顶上,我能想到一些......
  • SQL 注入(inject)仍然是一个问题。
  • CLR 通常可以防止缓冲区溢出,但如果将非托管代码与托管代码混合使用,则更有可能
  • .NET 代码可以反编译,因此将敏感信息存储在代码中,而不是在 app.config 中加密...

  • 是否有这样一个列表,甚至是这样一个列表的多个版本,我们可以从中借用来创建自己的列表?如果是这样,我在哪里可以找到它?

    我一直没能找到它,但如果有的话,这对我们以及其他 WinForms 开发人员都会有很大帮助。

    最佳答案

    Web 环境和桌面环境之间存在很大差异。在开发网站和服务时,您不信任的是用户(用户输入)。在运行桌面应用程序时,不受信任的是应用程序本身,或者至少,系统管理员想知道应用程序本身是否不会造成任何伤害,因为在本地计算机上运行的代码是有风险的通过它自己。

    所以从某种意义上说,对于作为桌面应用程序开发人员的您来说,安全规则并不总是适用,因为您运行的应用程序不是黑盒子,而是白盒子。对于 Web 服务/站点,您希望攻击无法更改内部状态,但对于任何桌面应用程序(Java、.NET、 native ),在应用程序运行时更改应用程序状态“相当”容易运行,尤其是使用 Java 和 .NET,调试和反编译应用程序非常容易。

    换句话说,您必须考虑到桌面应用程序已完全受到威胁,如果这是一种风险,您必须将所有必须安全的内容(身份验证、授权、验证)提取到外部(Web)服务中。对于此服务,“正常”OWASP 规则适用。

    您应该注意的是,当桌面应用程序直接连接到数据库时,很难完全保护您的数据层。例如,在这种情况下,SQL 注入(inject)对于您的桌面应用程序来说不是问题,因为当应用程序可以直接连接到数据库时,用户也可以。如果用户可以连接到数据库,他就可以执行任意查询。这是一种极端形式的 SQL 注入(inject),但它完全跳过了您的应用程序。

    试图保护 2 层应用程序,通常意味着使用存储过程作为中间(服务)层(并防止直接访问表)。开发和维护存储过程比开发 .NET (web) 服务的成本要高得多。

    关于.net - WinForms 应用程序的常见漏洞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11346652/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com