【问题标题】:How to disable the default proxy in c# programmatically?如何以编程方式禁用 C# 中的默认代理?
【发布时间】:2018-12-15 01:27:55
【问题描述】:

在 .net 程序中,如果我们想通过将 IE/Edge 代理端口设置为自身来阻止 Web Debugging Proxy 捕获来自程序的请求,我们可以使用 App.config 将默认代理设置为 false。通过这种方式,我们可以在一定程度上保护内部的机制。 但是,配置是裸露的,如果用户想要破解程序,用户可以轻松更改它,如果用户具有 CS 的基本知识。那么,有没有办法把它放在代码中,让黑客不得不反编译才能破解?

【问题讨论】:

    标签: c# .net networking proxy


    【解决方案1】:

    正如 Gabriel 提到的,不要将代理设置指定为硬编码设置。 如果需要安全性,请找到一种方法以未知格式序列化您的数据。

    那么,有没有办法让它在代码中,这样黑客就必须反编译才能破解

    除非采取一些额外的步骤,否则您可以使用 ildasm.exe 轻松查看 DLL 的源代码。请看一看- How can I protect my .NET assemblies from decompilation?.

    如果您使用的是:WebRequest 类请查看 WebRequest.DefaultWebProxy 属性,将其设置为 null 它将不需要任何代理。 https://docs.microsoft.com/en-us/dotnet/api/system.net.webrequest.defaultwebproxy?view=netframework-4.7.2#System_Net_WebRequest_DefaultWebProxy

    如果计划使用 HttpClient 类 - 您可能需要传递自定义处理程序,WebRequestHandler 应该通过将 UseProxy 设置为 false 来完成这项工作。https://docs.microsoft.com/en-us/dotnet/api/system.net.http.webrequesthandler?view=netframework-4.7.2

    更新: 添加无法评论的注释:在代理服务器的情况下,即使是 HTTPS 流量也可以轻松解密。

    【讨论】:

      【解决方案2】:

      不要。有几个原因(至少):

      • 在某些网络中,有时访问 Internet 的唯一方法是通过代理。如果您将程序硬编码为不使用代理,那么您将破坏它。
      • 没有办法阻止人们看到交通。我可以使用 Wireshark 查看代理可以看到的所有内容。

      相反,只需加密您的流量(如果您使用网络服务,请使用 HTTPS)。然后,即使它通过代理或网络嗅探器,它也无法读取。

      【讨论】:

      • 不,这是从 httpWebRequest 到普通公共 URL 的普通 http/https 请求,我无法对其进行加密(但您对此有什么解决方案吗?)。 Wireshark 是无敌的,但是对于 hecker 来说使用起来要困难得多,因为我可能面临的 hecker 不太可能使用它。此外,如果有办法以编程方式执行此操作,当您提到的情况出现(无法访问互联网)时,我仍然可以切换到正常方式(默认代理)。
      • 如果是对 Internet 的普通 HTTPS 请求(不是 HTTP),那么您无需担心。它会自动为您加密。 HTTPS 的重点是防止拦截。
      • 但我不希望用户知道我在哪里访问或修改返回给黑客的数据。当我没有自己的服务器时,您可以想象我正在做一些简单的软件验证和验证作为解决方法。
      • 如果您使用 HTTPS,任何人都无法查看或修改传输中的数据。更改代理不会隐藏任何内容。 HTTPS 会。
      猜你喜欢
      • 1970-01-01
      • 2013-05-08
      • 2012-08-16
      • 1970-01-01
      • 2011-08-08
      • 2016-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多