首页 > 解决方案 > 如何以编程方式禁用 C# 中的默认代理?

问题描述

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

标签: c#.netnetworkingproxy

解决方案


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

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

除非采取一些额外的步骤,否则您可以使用 ildasm.exe 轻松查看 DLL 的源代码。请看一下 - 如何保护我的 .NET 程序集不被反编译?.

如果您正在使用: 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 流量也可以在代理服务器的情况下轻松解密。


推荐阅读