(看看我在那里做了什么?)
我正在开发一个WinForms应用程序,它需要从包含敏感信息的文件中检索信息。检索到的信息用于执行一些复杂的计算,但它包括大型公司员工的某些薪资范围的工资。最终需要将WinForms应用程序部署到该公司的成员,但我需要确保不向他们透露此文件的内容。
文件本身是一个JSON文件,目前存储在Visual Studio项目文件结构中。
如果我是通过Visual Studio的Build菜单“发布”此应用程序,并通过Web链接发布它,那么人们是否可以打开这个JSON文件并查看它?如果是这样,有什么办法可以避免这种情况吗?我已经考虑过在线存储文件并通过HTTP请求访问它,但是我对此并不是很了解,所以可以提供一些建议。
干杯, 约什
答案 0 :(得分:3)
如果我是通过Visual Studio的Build菜单“发布”此应用程序,并通过Web链接发布它,那么人们是否可以打开这个JSON文件并查看它?
是
如果是这样,有什么办法可以避免这种情况吗?
仅限不发布文件。
您应该考虑将此信息存储在只能通过HTTPS通过授权帐户访问的数据库中。我建议使用WCF,因为它可以很好地与C#和WinForms集成。最好的方法是在服务器端执行计算(在WCF服务本身或在数据库中作为存储过程)。因此,您只需要收集客户端上的输入,将这些输入传递回服务器,然后显示结果。
您还可以执行记录所有尝试(成功与否)以访问此数据的操作,以便您拥有完整的审计跟踪。如有必要,您还可以将WCF服务公开给其他客户端。
答案 1 :(得分:1)
我将研究创建一个单独的(WebAPI或WCF)服务,该服务可以访问该文件,并知道如何向应用程序提供面向公众的部分服务。
因此,我们假设该文件位于\\hrserver\C$\sensitive.dat
。您的服务可以访问该文件,但客户端应用程序不能访问该文件。您的客户端应用程序访问服务(https://hrserverhelper/GetHrData
),该服务将身份验证/授权封装到该文件中。然后,它会解析敏感数据(可能来自您已设置为该文件创建的JSON),并将非敏感数据传递给您的客户端应用程序。
如果结果是全部文件中的数据是敏感的,那么请让您的服务提供操作以执行WinForms应用当前执行的计算。例如,您的WinForms应用程序将其希望执行的输入提交给WebMethod,该WebMethod知道如何使用敏感数据执行这些计算 - WebMethod会吐出结果。
然而,在这种情况下,请注意基本的数学技能可能能够对敏感的"数据在这里。如果我提交2并且返回4,并且我提交3并且返回6,我将假设"敏感"数字是2。