【问题标题】:How to: Encrypt URL in WebBrowser Controls如何:在 WebBrowser 控件中加密 URL
【发布时间】:2014-06-13 16:27:09
【问题描述】:

我有一个程序可以打开 Web 浏览器控件并仅显示来自我们服务器的网页。他们无法导航或任何东西。

不允许用户知道登录所需的凭据,所以在谷歌上搜索了如何登录服务器后,我发现了这个:

http://user_name:password@URL

这是“硬编码”到网络浏览器代码中的。 - 它工作正常。

但是:一些聪明的驴子设法通过使用 WireShark 来获取凭据,它会跟踪从您的机器发送的所有数据包。

有没有办法可以加密这个让用户无法发现?

我尝试过其他方法,例如使用 POST,但由于页面的设置方式,它很难正常工作。 -(它是一个 SSRS 报告管理器网页)

我忘了附上这个问题的链接:How to encrypt/decrypt the url in C#

^我不能使用这个答案,因为我自己不能更改任何服务器设置!

抱歉,如果这是一个糟糕的问题,我在过去几天尝试四处搜索,但找不到任何有用的东西。

【问题讨论】:

  • 您应该研究某种基于令牌的身份验证。基本上,调用 url 的地方会创建一个令牌,然后端点会使用某种数据库/服务从 url 交叉引用中获取令牌,然后完成登录。令牌应在使用后销毁,并为每个请求创建一个唯一的令牌。
  • 天哪,真是个糟糕的主意。不要责怪发现缺陷的人,如果他对你有任何帮助的话。
  • 我知道他帮了我一个忙,这就是我试图修复它的原因?
  • SSL 是唯一可以加密网络上数据的方法。 Wireshark 在传输(TCP/IP 中的 t)级别进行侦听,因此您需要加密所有此级别,而这只有 SSL 可以做到。这需要在服务器上进行配置。
  • 无论您如何进行身份验证(例如,执行您当前正在执行的操作或使用 cookie 或在 HTTP 标头中使用令牌等),您都需要按照 @Liam 的建议使用 SSL(啊哈 TLS)。无论您如何进行身份验证,不使用 TLS 都会让您对 Wire Shark 和任何类型的中间人攻击 (MTM) 等工具敞开大门。

标签: c# security browser


【解决方案1】:

也许您可以通过间接层来解决您的问题 - 例如,您可以创建一个简单的 MVC 网站,该网站不需要 any 身份验证(或者实际上,需要一些身份验证您完全控制),并且是 此站点 实际向 SSRS 页面发出请求。

  • 这样您就可以完全控制您发送身份验证的方式,并且您无需担心有人会访问实际的 SSRS 系统。现在,如果您的解决方案要求网页具有交互性,那么我不确定这是否适合您,但如果它只是一个静态报告,那可能是可行的方法。

即您从应用程序中获得的流量将是

  • 用户登录您的应用(或使用 Windows 凭据等)

  • 用户点击请求 SSRS 页面

  • 您的应用向您的MVC 应用发出HTTP 请求

  • 您的 MVC 应用程序向 SSRS 发出“真实的”HTTP 请求(例如通过 HttpClient 等)并将结果转储回调用者(例如,它可以通过以下方式写入 SSRS 响应) @HTML.Raw 在 MVC 视图中)因此,您的应用将永远不会发送 SSRS 的凭据,因此您无需再担心这个问题...

只是一个想法。

顺便说一句,您可以查看here 以了解 SSRS 允许进行身份验证的各种选项;您可能会找到一些适合的方法(例如自定义身份验证) - 我知道您提到您无法更改服务器上的任何内容,所以我只是将其包含在内以供后代使用。

【讨论】:

  • 太棒了!从来没想过!而且效果很好。
猜你喜欢
  • 2012-04-13
  • 1970-01-01
  • 2021-07-30
  • 2010-09-29
  • 1970-01-01
  • 2012-03-31
  • 2011-01-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多