保护桌面应用程序免受意外使用

时间:2015-03-01 20:28:28

标签: c# .net security

我正在为公司的销售团队编写一个程序。该公司希望阻止被解雇的销售人员继续使用该计划。因为销售人员将在他们的人事计算机中使用该程序,所以我需要对程序副本ID做一些事情。此外,销售人员每次都没有互联网连接(他们当然有时会这样做)。

我正在考虑设置

  • 我的主机中的XML文件,其中包含已启用哪个已禁用的程序ID
  • 启用或禁用(加密)保存其程序的本地计算机中的XML文件
  • 当他或她有互联网连接时,程序在我的主机中查找XML文件并检查他的程序是否仍然启用。如果禁用,则在本地计算机中写入不再启用该程序的XML文件。

该机制存在一些瓶颈。

  • 如果用户复制本地XML并使用它,他就可以使用该程序 每时每刻。
  • 如果用户在程序运行时未连接互联网, 他可以再次使用。
  • 我不知道每个程序副本如何具有不同的唯一ID。

问题是,当公司不想要时,保护他们使用该程序的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

所以我们显然需要互联网连接来了解销售人员是否与公司合作。

  • 销售人员第一次运行程序时,必须连接到互联网。
  • 当销售人员登录时,您为他分配一个具有多个登录的唯一ID [可以是x号码]。我们不能在这里使用到期日,因为销售人员可以更改本地机器的日期。
  • 每次销售人员打开程序时,都会使用一个登录名。
  • 完成登录次数后,程序必须再次与互联网同步。
  • 如果销售员在登录完成之前连接到令牌网络服务,则应刷新其登录数量。
  • 如果Salesman连接到Web服务并且他不再与公司合作,那么他当前的所有登录都应该直接过期。

在这种情况下,复制文件不起作用,因为ID会在一定数量的登录后过期。

现在,要停止销售人员自行更改本地数据:

  • 选项1:使用任何文件库数据库,如SQL Lite或任何其他内容。放 验证该数据库,这种方式您使用已经构建 认证。我会配合这个。 [这也可以为您提供其他方便的脱机服务功能]。
  • 选项2:将其保存为XML,只需对其进行加密并保持加密 关键你的程序。显然,如果推销员足够聪明,可以使用 解密并获取加密密钥,我们就可以开始思考了 那也是。这个时候不会建议你过度工程。

现在,如果销售人员让应用程序继续运行

  • 每当销售人员打开一个程序时,他的In Memory身份验证令牌应该有到期时间。它必须是几小时或几分钟[所以让我们8个小时 日是一次登录]。
  • 应用程序应该开始在该时间段内在后台运行计时器,一旦该计时器完成,当前令牌将过期并将使用新的登录令牌。如果没有剩余的登录令牌,我们可以强迫他连接到互联网并停止申请。

如果您想要处理更多场景,请告知我们。我试图掩盖你问题中的所有内容。

答案 1 :(得分:-1)

很少有事情可以想到。

  • 除非您连接到互联网,否则现在可​​以让程序知道用户突然被解雇 - 并且不应该被允许使用该程序。
  • 因此,最好的方法是始终要求有效的互联网连接(以验证用户)。但是,在您的方案中可能无法实现这一点。
  • 下一个最好的方法是在需要互联网连接和新验证之前,给出时间限制的访问密钥(“许可证密钥”),这些密钥只能持续一段时间。 (例如,“许可证密钥”持续2周)。
  • 根据被解雇的销售人员的技术苛刻程度,您可以创建更简单或更复杂的方式来存储“许可证密钥”。只需确保您的程序最初需要Internet连接才能获得第一个有效的“许可证密钥”