2009-02-06 77 views
7

我是一个非常了解安全性的Web开发人员,尽量让我的Web应用程序尽可能安全。我如何开始在C#中编写我自己的Windows应用程序,当它测试我的C#应用​​程序的安全性时,我真的只是一个新手。黑客攻击您自己的应用程序

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

+1

我想你的意思是**破解**,**黑客**是你在你的应用程序上工作时所做的。 – 2009-02-06 10:29:16

回答

2

除了防止缓冲区溢出的所有明显的答案,代码注入,会话highjacking等。人。你应该找别人去检查你的代码/软件,因为你只能想办法破解你知道如何防范的软件。仅仅因为你无法找到破解你自己的软件的方法,这并不意味着别人无法做到。

0

为了确保您的胜利形式的应用程序打开它,并尝试做lambda用户不应该做的一切!我会解释一下:

如果你说“输入yesno”,试试A-Z,0-9,因为这是一些用户试图找到一些有趣的堆栈跟踪。所以到处都是验证器。

当心与数据库的连接,但如果你来自web dev,你应该比我更清楚:)。

最难的部分是要注意内存泄漏或类似的东西,但这是在大的大应用程序或在不发达的应用程序。

2

这是你很难做的事情,我认为你是从错误的角度接近问题。如果您正在编写任意大小的应用程序,那么最后尝试处理安全性时,通过寻找打破自己的软件的特定方法几乎是不可能的。

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

另一个问题是,这一点的任务是太大,处理不了。您发现的任何问题都可能导致其他任何问题。系统范围的安全检查远不够精细。

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

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

1

你可能会比阅读罗斯安德森的Security Engineering书更糟糕。第一版可以下载PDF格式,是一个很好的阅读。我没有阅读第二版,但我怀疑它更好,并有更多的好东西。

请注意,它是一本解释如何从一开始就构建安全性的书,而不是如何破解安全性,但是对各种安全缺陷的阐述应该为您提供一个从哪里开始寻找的好主意。

1

我通过自己的经验遇到的小东西。

  • 不要使用动态SQL,那么您很容易受到SQL注入的影响。而是使用具有参数的SQL查询。
  • 不要像user_id = 1,2,3等增加id,然后在URL中使用something.aspx?user_id = 1,然后我可以猜测下一个ID和会话希望。同样的帐户和其他任何事情都很敏感。
  • 小心XSS,(跨站点脚本)。如果您接受用户输入并直接存储它,请确保他们不能插入alert()作为他们的名字或其他内容。

这绝不是一个完整的清单。就是我最近碰到的东西。