抱歉,这是两个部分的问题.布奥。我不知道如何确保应用程序的安全,但我现在需要确定它,然后才能在项目中遥遥领先。
我目前正在完成Windows VB.Net应用程序的最后几个部分。
该应用程序将将潜在敏感数据远程存储在SQL数据库中,应用程序需要连接到该数据库,以便撤回数据。
我之前曾问过,我可以帮助尽可能多地保护这个应用程序,因为它将部署在公共领域。我研究了加密连接字符串和敏感细节,以及混淆代码和将数据库保护到只能执行存储过程的最小用户。
我最初的理论是:
我对这一特殊设置的主要关注和最大的恐惧是,它仍然很容易被黑客攻击。所以我想第一个问题是..。
选项1:(最不安全)上述攻击的可能性有多大,我遗漏了哪些步骤?用户如何能够轻松地解压缩应用程序,仔细筛选模糊/密码的代码,提取加密的过程名和SQL连接字符串,使用IP通过带有用户名和密码的SSMS连接,并坐在那里猜测用户名的输入参数,直到散列和盐渍密码弹出为止?
是否有更好的方法来做以上的事情,或者我是不是错过了一步,如果我沿着这条路走下去,会大大增加安全性吗?我死记硬背地读到了每个用户的单个SQL帐户,但不确定这会带来什么安全好处?
选项2:(最安全) web或WebService在我的场景中是如何帮助或工作的?因此,这当然是一种选择,作为前进的道路,我不反对它,但我是一个严重的新手,当涉及到ASP.Net和它的服务。所以我想我的主要问题是,是否有一个指南,或者至少一个例子,我可以看到的东西,甚至帮助别人可以提供,甚至一个有偿的培训课程,可以告诉我如何建立这样的东西?
另外,如果API / WebService可以以JSON格式提供数据,那么WebService如何接受数据作为插入数据库的请求?我甚至不确定API / WebService是否能做到这一点,因为我认为这种设置会使它成为单向数据传输。
如果API / WebService是在线托管的,并且将检索它的URL嵌入到应用程序中,那么这又如何更安全呢?最终用户可以不简单地抓取URL,然后用一个可爱的GUI发送自己的数据请求来帮助他们吗?
对于多个问题表示歉意,但我很难理解如何将当前的事情向前推进,并且考虑到数据存储的性质,它必须相当安全。
发布于 2019-06-06 17:10:11
好吧,让我们先看看选项:
选项1
首先,如果连接字符串是纯文本的,那么app.config
就不是那么安全。实际上,您可以加密配置文件的一部分,这可能会给您的安全性增加更多。接下来是代码的反编译。这是你根本做不了的事。无论您在代码中添加了多大程度的混淆,也不管您减少了多少,代码始终是可反编译的。毕竟,你的电脑需要阅读代码,对吗?所以,是的,混淆可能会增加应用程序的源代码安全性。然而,它不能保证100%的安全性。
也不确定您对数据库有多少经验,但正如您所说的,您已经创建了一个只能执行某些存储过程的SQL server终端用户,那么您为什么要担心有人访问您的密码呢?
这也让我想知道为什么你会担心hashed+salted密码。如果你的应用程序没有产生数十亿美元,而且你也没有像谷歌或Facebook那样统治市场,那么给我一个理由,我为什么要黑进你的系统?看看你申请的是哪一种皮肤?
选项2
现在我们开始谈话了!因此,如果我们想讨论Web ,让我们先忘掉安全性。
假设一个用户使用您的桌面应用程序,尝试直接将他/她的数据插入数据库,而没有任何Web。假设当他点击“”或类似的东西时,用户的互联网连接就会下降。你知道接下来会发生什么吗?用户打开到数据库的连接,尝试插入一些数据,但在数据库真正获得需要插入的全部数据之前,应用程序失去了连接,您的SQL查询要么不完整,要么变得奇怪,该查询被执行,砰!整个表都损坏了!嗯,有时候甚至更糟,但是嘿,我不要再吓唬你了。
Web 可以将您从这种情况中拯救出来。我不打算详述,但最简单的逻辑是:
要么您正确地调用API,然后API进行数据库调用,要么您不进行正确的调用,API就不会继续进行数据库调用。
API还可以让您更好地控制某人从您的服务器上实际获得的信息。在可伸缩性方面,您也有一个巨大的优势。因为您对Web和数据库进行了同样多的更新,而不必对最终用户的应用程序做任何操作,因此减少了用户下载每个更新的需求。
现在,让我们把一件事弄清楚。Web和Web是两种不同的东西(尽管关系密切)。无论如何,从Web获取数据所需的请求称为GET
请求。当您想插入数据时,您需要发出一个POST
请求。要删除,您需要发出一个Delete
请求,要更新,可以使用PUT
或PATCH
。
如何在每个请求上服务器数据是一个完全不同的主题。你可以在谷歌上搜索。但我会让你容易的。跟这个一起走:Asp.Net Core2.0WebAPI教程。
此外,一定要在搜索查询中包括"RESTful“。
无论如何,最好的选择实际上是将选项1和选项2结合起来。
我想这就是你现在所能做的。但是如果你有很多资源,比如说,像Google或Facebook这样的数十亿美元,你可以为你的安全增加更多!
干杯。
https://stackoverflow.com/questions/56480260
复制相似问题