繁体   English   中英

Delphi&Twebbrowser-如何恢复登录页面提供的安全令牌?

[英]Delphi & Twebbrowser - How to recover a security token supplied by a login page?

我正在Delphi(2009)中使用Twebbrowser登录到ISP上的cpanel,并为MySQL数据库添加新的远程主机IP地址。 用户名和密码使用单击此处的“提交”按钮的代码填充,此处使用从此处多个位置收集的代码。

直接导航到主机页面会导致首先显示cpanel登录页面。 我的程序检测到此情况并登录。

这使用像

WebBrowser1.Navigate'https://thedomain.sgcpanel.com:2083/cpsess1819495779/frontend/Crystal/sql/managehost.html');

到达主机页面可以,但是我注意到安全令牌(cpsess1819495779)每次都更改为其他名称,大概是由登录页面提供的。

但是,如果我尝试先作为单独的操作登录, 然后使用以下方法导航到主机页面

WebBrowser1.Navigate('https://thedomain.sgcpanel.com:2083');

其次是

WebBrowser1.Navigate'https://thedomain.sgcpanel.com:2083/cpsess1819495779/frontend/Crystal/sql/managehost.html');

我收到一则服务器消息,指出主机页面的URL具有无效的安全令牌-大概是cpsess1819495779位

如何使用Twebbrowser掌握登录页面生成的安全令牌,以便使用它为主机页面构建正确的url,以便每次都传递正确的安全令牌。

这可能与Cookie等有关,但我不知道该如何处理(还)

顺便说一句,因为Twebbrowser不可见,我确实花了几天的时间尝试使用Indy的TIdHTTP做相同的事情,但是由于出现了很多我无法解决的错误,我已经放弃了。

我不妨自己回答这个问题以结束问题,也可以避免由于广泛的研究未能给出答案而又再投下一个问题,而这又没有我的简洁性。

cpanel(许多ISP用于管理MySQL,电子邮件等的应用程序)的API文档位于: https : //documentation.cpanel.net/display/SDK/Guide+to+cPanel+API+2

其中一部分说

安全令牌登录到服务器后,它将自动将安全令牌附加到会话的URL。 安全令牌有助于防止通过XSRF(跨站点请求伪造)对网站的授权使用。 安全令牌包含字符串cpsess和10位数字。

在IE / Chrome等中手动登录确实确实显示了令牌,例如cpsess1819495779插入了导航到的原始URL。 所以如果我导航到

https://thedomain.sgcpanel.com:2083/cpsess0000000000/frontend/Crystal/sql/managehost.html

(登录到cpanel),则cpsess之后在浏览器中显示的部分网址会更改为类似的形式,其中数字每次都会更改。

https://secureukm11.sgcpanel.com:2083/cpsess1819495779/frontend/Crystal/sql/managehost.html

但是,使用Twebbrowser使用以下命令显示修改后的网址

memo1.Lines.Add(WebBrowser1.LocationURL);

要么

ShowMessage('URL: ' + Webbrowser1.OleObject.Document.Url);

只是显示带有零的原始网址,而不是真实的安全令牌。

因此,我的问题的答案似乎是它不能在Twebbrowser中完成,因为仅在服务器上更改了URL,并且安全令牌没有传输回浏览器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM