我是一名非常注重安全性的网络开发人员,并尽量使我的网络应用程序尽可能安全。
我怎么开始在C#中编写自己的Windows应用程序,当它测试我的C#应用程序的安全性时,我真的只是一个新手。
只是想知道是否有人有关于如何破解自己的Windows应用程序和编写安全代码的任何好的教程/自述文件。
答案 0 :(得分:5)
Michael Howard的书是一个很好的起点;
Michael Howard的博客here
中有大量的链接和有趣的文章微软就威胁评估,风险和ASP here提供了一个有趣的powerpoint演示文稿。
答案 1 :(得分:2)
除了防止缓冲区溢出,代码注入,会话劫持等所有明显的答案。人。您应该找其他人检查您的代码/软件,因为您只能考虑如何破解您知道如何防止的软件。只是因为你无法找到破解你自己的软件的方法,这并不意味着没有其他人可以。
答案 2 :(得分:2)
这对你来说非常困难,我认为你正在从错误的角度解决问题。如果您正在编写任何规模的应用程序,那么最后通过寻找破坏自己软件的具体方法来尝试处理安全性几乎是不可能的。
这是出于多种原因。您已经以某种方式考虑过您的软件。您可以考虑与其进行交互的具体方式,并且您知道如何从中获得最佳效果。你没有考虑利用它的方法,这对于你非常熟悉的软件来说很难。
另一个问题是,此时的任务太大而无法处理。您发现的任何问题都可能会导致许多其他问题。系统范围的安全检查远不够精细。</ p>
您应该做的是在编写软件时考虑安全性。学习最佳实践,并考虑从安全角度编写的每个方法和类。这与单元测试密切相关,尝试考虑哪些输入可以使我的程序的这个特定部分中断。然后在那个级别处理它们。
之后我认为这是对您所了解的任何安全问题迅速做出回应的问题。
答案 3 :(得分:1)
你可能比阅读罗斯安德森的Security Engineering书更糟糕。第一版可以PDF格式下载,是一本很好的阅读。我还没看过第二版,但我怀疑它更好,并且有更多的好东西。
请注意,它是一本书,解释了如何从一开始就构建安全性,而不是如何破坏安全性,但是对各种安全性错误的阐述应该会让您对从哪里开始寻找有所了解。
答案 4 :(得分:1)
我通过自己的经历遇到的小事。
这绝不是完整的清单。只是我最近遇到的事情。
答案 5 :(得分:0)
要保护您的win表单应用程序,请打开它并尝试执行lambda用户不应该做的所有事情!我会解释一下:
如果您“输入yes
或no
”,请尝试使用A-Z,0-9,因为这是一些用户尝试查找可能有趣的堆栈跟踪的操作。所以在任何地方放置验证器。
小心与数据库的连接,但如果你来自web dev,你应该比我更了解:)。
最难的部分是关注内存泄漏或类似内容,但这些内容存在于大型应用程序或未开发的应用程序中。