gpt4 book ai didi

c# - 需要 asp.net webservice 的安全场景

转载 作者:行者123 更新时间:2023-11-30 22:26:15 25 4
gpt4 key购买 nike

我开发了一个 .Net 3.5 windows 窗体应用程序。我还想设计一个网站,该网站有一个带有多个 Web 方法的 Web 服务来查询主机上的数据库。我希望仅通过我的 winapp 和我的网站调用网络服务!而且我不希望任何其他人能够调用和使用我的网络服务,但只有一些有权访问我开发的 Windows 应用程序的人。

为此我需要一个良好的安全场景!我真的很感谢任何能帮助我的人,因为这是我第一次开发网络服务,我真的需要它像我提到的那样安全!

最佳答案

由于多种原因,您所说的将很难做到,但主要是:

如果您在 WinForms 应用程序的代码中放置任何内容,它可以很容易地被反编译。您可以随意混淆代码,但可以对其进行反编译。

正因为如此,任何有权访问该代码的人都可以读取您应用中的任何代码。 您应该始终将任何 WinForms 应用视为完全受损,并确保服务器端的安全性进行补偿。

因此,您不能简单地将用户名和密码存储在配置文件或代码中。你必须想出别的办法。您可以使用身份验证并提示用户在程序启动时输入用户名/密码,然后使用它。但是,人们倾向于分享这些东西,因此您可能需要额外的保护。

您可以将连接信息或 secret 放入 app.config 中并对其进行加密,但是任何可以反编译代码的人都可以重新编译它,并随意添加代码来解密它。

您可以为您的应用提供签名 key ,并在身份验证机制中使用它,但这可以被绕过。

您可以将您的 IP 地址限制为特定的 IP 地址,但这些地址可能会被欺骗。

但是……

通过对上述所有技术进行分层,您可以让攻击者难以绕过您的预防措施。我们在我们有类似要求的应用程序中执行了以下操作:

  • 我们建立了一个数据库,其中包含每个授权客户的 GUID 记录,以及允许该客户使用的 IP 地址。
  • 每个网络方法都需要一个 CustomerKey 参数。 (上面提到的 guid)每次调用 Web 服务都会根据 IP 地址检查 key 。
    • 如果匹配,则返回有效数据。
    • 如果失败,将返回看起来有效 的数据。我们实际上返回了看起来不错的数据,但实际上并非如此。这使得攻击者更难知道他们是否真的突破了防御。
  • 在 WinForms 应用程序中, key 存储在 app.config 中,它在 main() 事件(WinForms 应用程序的入口点)中加密。这是为了防止不经意的读者访问它。
  • 该程序会在安装时自动启动,因此加密会在启动时进行,从而最大限度地减少有人在文件加密前读取文件的机会。
  • 另外,代码被混淆了。

分层防御有望阻止普通攻击者。

Microsoft 也有一些指南:http://msdn.microsoft.com/en-us/library/ff648643.aspx

关于c# - 需要 asp.net webservice 的安全场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11977336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com