【发布时间】: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) 等工具敞开大门。