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

我是如何开始用 C# 编写自己的 Windows 应用程序的,当谈到测试我的 C# 应用程序的安全性时,我实际上只是一个新手。

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

有帮助吗?

解决方案

迈克尔·霍华德的书是一个很好的起点;

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

Microsoft 有一个有趣的 Powerpoint 演示,内容涉及威胁评估、风险和 ASP 这里.

其他提示

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

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

这是出于多种原因。您已经以某种方式考虑您的软件。你会想到与之互动的具体方式,并且知道如何从中获得最好的效果。您不会考虑如何利用它,而对于您非常熟悉的软件来说,这是一件很难做到的事情。

另一个问题是,此时的任务太大,难以处理。您发现的任何问题都可能会引发许多其他问题。系统范围的安全检查还不够细致。

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

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

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

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

这绝不是完整的列表。只是我最近遇到的事情。

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

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

为了保护您的 win 表单应用程序,请打开它并尝试执行 lambda 用户不应该执行的所有操作!我会解释一下:

如果你“说输入 yes 或者 no”,尝试使用 A-Z、0-9,因为某些用户会这样做来尝试找到一些可能有趣的堆栈跟踪。所以到处都放验证器。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top