我怎样才能防止破坏可怕的我的桌面应用程序,当用户在运行时,其文件弄乱?(How can I prev

2019-10-20 10:38发布

如删除运行期间输出文件,指挥SW的两个实例为相同IO等?

Answer 1:

没有太多可以做,以防止用户这样做,但你可以做的是应用防御性编程 。

在你的两个例子,你必须,每次访问资源时,检测故障条件和作出适当的反应要么抛出异常和死亡或继续不访问该资源。

永远不要假设资源分配会成功,经常检查你无法控制的东西。 总之, 承担尽可能少和验证一切

“有人告诉我访问此文件写入。 是否已经打开? 我有权限? 是否有预期的格式? 是否磁盘有足够的空间? 等等。'

还有更多关于这一点。 只是谷歌的防御性编程,你会得到很多了解。



Answer 2:

假设什么。 检查使用IO,每一次每一个操作。 在软件的IO与内置的检查将额外的层。



Answer 3:

有一些很好的答案在这里,但我认为你需要考虑你会捍卫什么反对。

是程序要谁想要使用它的人使用? 如果是这样,你需要抵御愚蠢(实际的范围内),而不是破坏。 你还是要检查所有的输入,但如果用户没有做一些愚蠢的事,这是合理的得到低于最佳效果。 如果用户对系统的访问,您可能无法阻止的事情,如删除输出文件,这样你就不能为它的代码。 有些事情,只是训练的问题。

是程序要通过不希望它做谁的人使用,如时间,时钟应用程序来记录当人们切入和切出? 有人需要考虑物理安全(商业版本的设计采取了很多的虐待),和软件安全(所以没有人可以改变倍)。 您需要提供一个非常简单的界面和详细检查输入。



Answer 4:

把最大输入长度上的UI每个文本框或编辑控件。 测试用输入无效数据(编辑如文本,其中一些预计),并制定检查/处理那种输入的常用方法。

想想也是通过搜索字词SQL注入攻击。 例如,寻找人,其中姓___,且用户输入“*史密斯”; SELECT * FROM用户*”,会是什么数据库层做呢?

如果用户进入数据将显示还给他们(或者更糟,其他用户),看看他们是否可以嵌入任何标记或控制序列到它在显示时,它们可能会滥用UI。

你不说你的目标是什么操作系统和语言,而是看给应用程序,它为了执行所需要的最低限度的权限。 例如,在.NET中,看看声明性安全属性。 这意味着,如果你的应用程序的攻击者控制了,还有就是他们可以用它做损伤小。

与故意坏输入创建单元测试,以验证应用程序可以应付它。



Answer 5:

有一件事情我听说过的人做下运行不可信的东西的VirtualPC ,使基本系统不能得到不论什么损坏。



Answer 6:

怎么样有围绕模拟用户滥用好的测试人员?



Answer 7:

这是一个棘手的问题。 用户(甚至哑的)可以巧妙关于你从来没有考虑如何使用你的应用程序。

我是防御式编程的大风扇(如上由Vinko提到)。 您可以从一个危害分析点接近它。 看看资源应用程序使用和修改(文件,设备,数据等)和脑力激荡什么可以去错与它周围的这些资源和计划。

例如,如果你有一个专门的硬件资源,应用程序将各自争夺该资源的多个实例,可以使用户无法运行不止一个实例的详细强制单件模式为您的应用。

这一切都需要一点计划和工作,但嘿,这就是我们得到报酬:)



文章来源: How can I prevent my desktop application from breaking horribly when the user messes with its files at run-time?