如何以编程方式验证web表单的登录凭据

How to programmatically verify login credentials for a web form?

本文关键字:表单 登录 web 验证 编程 方式      更新时间:2023-09-26

我正在构建一个应用程序,让用户从大学系统导出数据。目前,他们可以登录并查看HTML中的数据,但我想让人们将其下载为CSV。

我有一个应用程序,用户可以在其中提供用户名和密码。我想登录到大学系统并用HTML刮取生成的页面。我该怎么做?

我正在构建一个GWT应用程序。我可以在客户端使用Java音译的JS,也可以在服务器上使用Java。

更新:硒可能不错,但看起来有些过头了。

除非域相同,否则必须在服务器上执行此操作。您需要确定另一台服务器在登录步骤中使用的POST事务是什么样子的——参数名称等。然后执行该操作,并对返回的内容执行任何操作。如果您需要查看多个页面,还需要维护适当的会话cookie,以便服务器知道您仍在登录后续的HTTP请求。

如果你必须访问另一个网站来验证凭据,那么我不确定人们是否会放心地向你提供这些凭据。也就是说,如果你没有直接检查凭据的权利,为什么你值得信任接收凭据?我知道有时人们需要与他们不拥有的系统集成,所以这只是一个问题。

首先,这必须在服务器端完成,因为同源策略对客户端脚本的限制。

处理您提到的"屏幕抓取"的典型方法是将网页视为XML服务。首先,检查页面的源代码,然后使用internet/HTTP堆栈,编写到正确URL的POST,并使用标准XML库读取响应。要想找到一种深入XML的好方法来找到您需要的尽可能与页面更改隔离的部分,需要一些独创性。请记住,您的系统可能会在网站所有者更改页面的任何时候中断。

有时,您不能只发送POST,而是必须首先请求空白页面,以便获得需要在POST中返回的隐藏表单值。你必须进行实验才能知道它需要什么。

此外,您可能还必须处理cookie,因为它们通常是网站身份验证和会话管理的组成部分(尽管您可能很幸运,会话在初始POST和第一次响应之间并不重要)。

最后,你可能很不幸,网站使用javascript来完成部分身份验证工作,这可能需要额外的挖掘来了解凭据是如何发布到网站的。

还有其他潜在的障碍,如网站检查以查看引用人是他们自己的网站,可能使用SSL(HTTPS)等等。

我敢肯定,web浏览器中的跨站点脚本保护意味着您不能使用web浏览器中运行的javascript登录大学的应用程序。因此,从大学获取数据的程序部分需要在服务器上运行。一旦你有了数据,你就可以在服务器上或浏览器中的javascript中处理它,但我认为在服务器上处理会更容易。

请参阅http://en.wikipedia.org/wiki/Same_origin_policy

我对GWT不太确定,但通常情况下,您会采用用户提交的表单数据,并将其与用户名和哈希密码数据库进行核对。如果数据库签出,则设置一个会话cookie,说明用户已登录

在您的页面中,检查会话cookie是否显示用户已登录。如果没有,请重定向到登录页面,否则允许他们查看页面。