【问题标题】:Best way to hide a form input field from being accessed using firebug?隐藏表单输入字段以防止使用 firebug 访问的最佳方法?
【发布时间】:2011-03-31 09:57:44
【问题描述】:

我有一个发布到外部 API 的表单。有一个名为 customer_token 的参数作为输入字段传递。它用于 API 的身份验证,并为每个客户分配一个令牌。输入字段在 Firefox 的 Firebug 中是可见的(即使它是一个隐藏字段)。

如何隐藏它?

选项 按照我最初的想法使用 javascript

我认为在提交表单之前使用 javascript 在运行时创建该输入字段并立即删除该字段将起作用,但该字段仍会暂时出现。因此,即使一个人无法手动获取它,恐怕爬虫或蜘蛛(我不知道确切的术语 - 但一些自动化脚本)可能会获取客户令牌。有没有更好的解决方案?表单提交后,仍然显示相同的表单。

使用 Ikke 建议的一次性令牌概念

我不确定它会如何工作? API 需要正确的客户令牌值来处理任何请求。因此,即使要生成一次性令牌并返回,也必须发送带有客户令牌的请求。这样,任何人都可以看到我的客户令牌值,他们还可以发送请求以获取一次性令牌并使用它。那么它是如何解决问题的呢?

已解决 检查How to post form to my server and then to API, instead of posting directly(for security reasons)? 谢谢, 桑迪潘

【问题讨论】:

  • 用户仍然可以监控所有 HTTP 请求,例如只需检查 Firebugs 的“net”选项卡,因此该值将可见。
  • 如前所述,没有“最好的方法”。实际上,根本没有办法。即使是地址栏中的简单 JavaScript 行也可以检索此值。像 Chrome 这样的浏览器内置了类似于 Firebug 的工具,所以只针对这个是个坏主意... :-)

标签: html forms information-hiding external-application


【解决方案1】:

这是不可能的。 Firebug 只是读取 DOM 的实际状态,因此即使在后期添加它,仍然可以检索到它。

这种安全方式称为Security through obscurity,是一种非安全。您将不得不以另一种方式解决它,例如让服务器执行请求。

您让用户将表单提交到服务器。然后使用curl,使用正确的用户代码调用网络服务。

【讨论】:

  • 一次性令牌将如何工作?如果你能解释一下。 API 需要正确的客户令牌值来处理任何请求。因此,即使要生成一次性令牌并返回,也必须发送带有客户令牌的请求。这样,任何人都可以看到我的客户令牌值,他们还可以发送请求以获取一次性令牌并使用它。那么它是如何解决问题的呢?
  • 请求是直接发给api,还是先发给你的服务器什么的?
  • 请求直接发送到API。如何遵循先发送请求到我的服务器然后再发送到 API 的方法?向我的服务器发送请求很好。但是,如何将请求从我的服务器发布到 API?请解释一下,我认为这是解决方案。谢谢,桑迪潘
  • 使用 curl 这样的库,可以进行外部 http 请求。
【解决方案2】:

恐怕这不可能。

如果它是通过 Javascript 插入的,Firebug 仍会看到该元素,因为它会监视 DOM 树。如果这个输入暴露了一个安全漏洞,那么你的服务器端代码的工作就是验证/修复它。

有关 API 的更多详细信息可能有助于有人更详细地回答这个问题。

希望对你有帮助

【讨论】:

  • API 需要将客户令牌作为输入字段传递
  • 客户令牌是否始终相同?令牌从何而来?
  • 是的,目前是一样的。它是客户域名的一些哈希
猜你喜欢
  • 2013-10-07
  • 2023-03-30
  • 1970-01-01
  • 2011-04-04
  • 2013-07-23
  • 1970-01-01
  • 2020-09-02
  • 1970-01-01
  • 2023-04-08
相关资源
最近更新 更多