C# 硬编码web应用程序(ASP.NET)的过期日期?

C# 硬编码web应用程序(ASP.NET)的过期日期?,c#,asp.net,security,iis,C#,Asp.net,Security,Iis,假设你想上传一个“测试版”,你有信任问题。 您将如何添加有效期 我曾考虑过硬编码一个失效日期,但之后任何人都可以反编译/重新编译.NET DLL 然后我想也许我应该让应用程序迭代它自己的文件并删除它们。但是,IIS工作程序将在删除一个重要的dll后停止,而我们将无法删除其他dll。更不用说,我们需要对所有文件夹(包括BIN)设置写入权限 嗯。。。有什么想法吗?您可能希望在代码的深处将日期用作一些有意义的输入变量,比如使用“超过阈值的刻度”来计算计划的可伸缩性降低,所有这些都设置在不同的时间阈值,

假设你想上传一个“测试版”,你有信任问题。 您将如何添加有效期

我曾考虑过硬编码一个失效日期,但之后任何人都可以反编译/重新编译.NET DLL

然后我想也许我应该让应用程序迭代它自己的文件并删除它们。但是,IIS工作程序将在删除一个重要的dll后停止,而我们将无法删除其他dll。更不用说,我们需要对所有文件夹(包括BIN)设置写入权限


嗯。。。有什么想法吗?

您可能希望在代码的深处将日期用作一些有意义的输入变量,比如使用“超过阈值的刻度”来计算计划的可伸缩性降低,所有这些都设置在不同的时间阈值,引入延迟或其他。如果将它们放在多个位置并用comments.cs标记,则在需要时可以很容易地删除它们,但从dll中删除它们的代价太高。

在某个位置添加硬编码的日期检查,然后删除应用程序

更新:

我不会说在模糊程序集中找到日期检查是件容易的事,特别是如果你使用一些商业工具的话。当然,这不可能是100%安全的,我没有调试/破解模糊程序集的经验,但我会花一些时间在谷歌上搜索商业模糊程序以及它们能做什么

除此之外,您还可以利用应用程序运行时连接到internet的事实,您可以检查一些外部资源,当然这些资源很容易被嗅探到,但是您可以编写应用程序的一些基本部分,即一些脚本,将该脚本加密到其他服务器上。然后,您的应用程序应该下载、解密并执行该脚本,所以如果您将其从远程服务器中删除,则很难重现该功能。第三方可能会下载该脚本,并在不可用时提供服务,请注意这一点。也许你可以使用你的c代码而不是脚本


我没有做过类似的事情,可能还有一些问题,这只是我脑海中闪过的一些事情,所以如果你想这样做,请做你的研究:)

关于信任问题,你的意思是你不能托管windows服务?我的意思是我们需要暂时托管在某人的服务器上,我们不完全信任的人。如果你不信任他们,不要这么做,很简单,永远不要把自己放在一个地方,向你不信任的人分发重要的东西,如果他们决心打破你的保护,得到他们想要的东西。我也同意——但在现实世界中,有些情况比这更复杂。这对我来说还不够,因为日期检查很容易找到。但也许我会结合删除最关键的文件,我可以。我会考虑一下,也许会想出一个更完整的解决方案。我真的很喜欢这个主意。这是实现完整解决方案的一个步骤。。。