我可以从其他网站呈现表单吗?

Ber*_*ing 6 php forms security csrf

我在网站A上有一个用户,我需要将他登录到网站B(不在我的控制之下),但不会损害他在网站B上的密码.网站B没有API,这使得它比应该更复杂.

我的第一个选择是在网站A上呈现我自己的表单,用户在我的表单中输入他的网站B密码,我以某种方式安全地将他的网站B密码传递给网站B以登录他.这意味着我必须首先安全地传递密码从客户端到我的服务器,然后从我的服务器安全地再次传递到最终网站.这就是我猜我必须做的,但我没有计划如何安全地实现这两个跳,所以我担心我可能会以某种方式暴露用户的密码.

所以我想到了第二个选项,就是将同一个网站B从网站B呈现到我的网站上.但是网站B上的表单是较大页面的一部分,所以可以这样做吗?

  • 如何从整页的代码中隔离表单本身的代码
  • 如何在我的网站上展示表格.我希望用户看到它.想到iframe,但从未使用它
  • 当用户单击提交按钮或在我的网站上呈现表单时,表单仍然有效

这些是我想到的两种不同的解决方案.我欢迎他们每个人的答案,并欢迎提出可能更容易的替代第三种方法的答案.

Tim*_*ora 7

只要您在自己的网站上使用SSL,就不会有损害用户密码的重大风险(除非您正在进行某种金融交易,请澄清).

我的建议是,不要复制他们的表格.而是复制该表单生成的HTTP POST.您可以完全以编程方式执行此操作,用户永远不会离开您的站点,但(在大多数情况下)结果将是用户也登录到他们的站点.

如果要处理某种散列字段,请以表格形式(以编程方式)请求它们并使用您收到的任何值发送第二个站点,以便请求将进行验证.他们的服务器不知道请求不是来自浏览器(实际上,如果您愿意,可以将用户代理添加到HTTP头).

我已经使用这种方法对抗Verizon的网站和LinkedIn(两者都是出于合法目的)并且它有效.

回顾一下:

  1. 了解HTTP POST的结构.

  2. 将登录表单添加到您的站点.

  3. 在您的代码中处理请求看起来像他们的网站所期望的POST.

  4. 从您的代码发布到他们的网站.

  5. 显示您网站上用户的响应(如果需要),重定向等等.


Dan*_*man 1

要将表单与较大的页面隔离,请找到<form></form>标签,并仅复制它们之间的任何 和 元素。现在将该表单放在您的页面上,其操作仍然指向它在原始网站上指向的 URL。密码永远不会通过您的服务器。