7

我是一名非常注重安全性的 Web 开发人员,并尝试使我的 Web 应用程序尽可能安全。

我是如何开始用 C# 编写自己的 Windows 应用程序的,而在测试 C# 应用程序的安全性时,我真的只是一个新手。

只是想知道是否有人有任何关于如何破解自己的 Windows 应用程序和编写安全代码的好的教程/自述文件。

4

6 回答 6

5

Michael Howard 的书是一个很好的起点。

这里有大量来自 Michael Howard 博客的链接和有趣的文章

Microsoft 有一个关于威胁评估、风险和 ASP的有趣的幻灯片演示。

于 2009-02-06T10:29:03.537 回答
2

除了防止缓冲区溢出、代码注入、会话劫持等所有明显的答案。人。您应该找其他人检查您的代码/软件,因为您只能考虑破解您知道如何防止的软件的方法。只是因为您找不到破解自己软件的方法,但这并不意味着其他人也可以。

于 2009-02-06T10:24:23.437 回答
2

这是你很难做到的事情,我认为你是从错误的角度来解决问题的。如果您正在编写任何规模的应用程序,那么通过寻找破坏您自己软件的特定方法来尝试最终处理安全性几乎是不可能的。

这是出于多种原因。您已经以某种方式考虑您的软件。您会想到与它交互的特定方式,并且知道如何从中获得最大收益。您不会从利用它的方式来考虑它,而这对于您非常熟悉的软件来说是一件很难的事情。

另一个问题是此时的任务太大而无法处理。您发现的任何问题都可能引发许多其他问题。系统范围的安全检查远远不够精细。

您应该做的是在编写软件时考虑安全性。学习最佳实践,并从安全角度考虑您编写的每个方法和类。这与单元测试密切相关,尝试考虑哪些输入可能会使我的程序的这个特定部分中断。然后在那个级别处理他们。

在那之后,我认为这是快速响应您意识到的任何安全问题的问题。

于 2009-02-06T10:43:52.053 回答
1

你可以做的比阅读罗斯安德森的安全工程书更糟糕。第一版可作为 PDF 下载,值得阅读。我还没有读过第二版,但我怀疑它更好,而且里面有更多的好东西。

请注意,这本书解释了如何从一开始就建立安全性,而不是如何破坏安全性,但对各种安全错误的阐述应该让您对从哪里开始寻找一个好主意。

于 2009-02-06T10:50:26.487 回答
1

我通过自己的经历遇到的小事情。

  • 不要使用动态 SQL,否则您很容易受到 SQL 注入的攻击。而是使用带参数的 SQL 查询。
  • 没有像 user_id = 1、2、3 等这样的递增 id,然后在 URL 中使用它,something.aspx?user_id=1,然后我可以猜测下一个 id 和会话希望。帐户也是如此,其他敏感的东西也是如此。
  • 注意 XSS(跨站点脚本)。如果您接受用户输入并直接存储它,请确保他们不能为他们的名字或其他内容插入 alert()。

这绝不是一个完整的列表。只是我最近遇到的东西。

于 2009-02-06T12:43:42.173 回答
0

为了保护您的 win 表单应用程序,请打开它并尝试做 lambda 用户不应该做的所有事情!我会解释:

如果您“说输入yesno”,请尝试使用 AZ,0-9,因为这是一些用户试图找到一些可能有趣的堆栈跟踪所做的事情。所以把验证器放在任何地方。

注意与数据库的连接,但如果您来自网络开发人员,您应该比我更清楚:)。

最难的部分是注意内存泄漏或类似的事情,但这是在大型应用程序或开发不完善的应用程序中。

于 2009-02-06T10:25:27.007 回答