2012-02-21 60 views
2

我正在增强遗留系统(我没有帮助构建),并希望从其他人那里了解我注意到的某些事情是否是合法的安全问题。隐藏字段的这些用途是否不安全?

首先,应用程序通过登录来保护。但是,一旦用户登录,整个应用程序就有11个页面,其中隐藏字段存储文件名的值以及下载路径。

Javascript用于自动提交表单,然后用户将文件下载并保存到他或她的计算机上。我在想这个值可能会改变,用户会不知不觉地下载一个恶意文件。

此外,还有许多页面将引用页面保存在隐藏字段中,以便用户在保存表单时可以返回到上一页。如果这些都是合法的问题,那又如何?如果可能的话,他们将如何受到攻击?什么是风险水平或潜在影响?我问的原因是,我可以提出这样的情况,如果是这样的话,应用程序需要修复。只是说“这不是一个好的做法”并不是一个好的理由。

感谢您的反馈!

+0

这个问题可能更适合[Security.StackExchange.com](http://security.stackexchange.com) – serk 2012-02-21 23:33:15

+1

第一听起来很像LFI对我来说(非常危险,可能有人可以下载您的数据库访问数据,例如,或者基本上他想要的任何文件)。只要尝试将'../../../../../etc/passwd'等东西放入该字段或其他东西时会发生什么。第二个(上一页)也没有听起来有风险,除非可以通过GET参数或某种方式操纵该值,在这种情况下,它将是XSS/HTML注入问题。 – 2012-02-21 23:37:18

+0

非常好的一点,Niklas。非常感谢您的反馈,我一定会做更多的调查!塞尔克,我甚至没有意识到,有各种主题的专门部分。我将铭记未来。谢谢。 – 2012-02-22 15:47:35

回答

2

很可能不安全。隐藏的表单字段是一个很好的实现。

具体而言,您不能依赖表单字段的值以与原始HTML呈现的值相同的值回发到服务器。

如果服务器实现了诸如对输入,校验和,散列,加密等进行消毒的对策,则使用可能会更安全一些。例如,ASP.NET使用ViewState进行此操作。

也就是说......

想看看它是多么不安全?使用Chrome或Firefox开发人员工具将其中一个隐藏字段的输入类型属性从“隐藏”更改为“文本”,然后观看显示的文本字段(您可以更改它并提交您喜欢的任何值)。

我也强烈推荐在他的回答中阅读马特关于潜在风险分析的观点。

+0

如果不能以恶意的方式操纵该值,那么这并不完全不安全。然而,在这种情况下,我认为至少第一个问题听起来非常像本地文件包含漏洞。你为什么说“提交你喜欢的任何*用户名*”? – 2012-02-21 23:34:50

+0

用户名是错字,已更正。基于OP,我怀疑这些是明文值。如果它们被散列或加密,则它是一个不同的故事。 – 2012-02-21 23:35:38

+0

不,我的意思是如果服务器端实现适当的输入消毒。例如,如果服务器只允许指向有效下载目录的路径,则它可能是安全的。 – 2012-02-21 23:39:03

0

隐藏的字段只是一个GUI问题 - 你没有看到它们在屏幕上,但他们仍然存在。这使得它们与任何其他(可见的)字段一样可行。这就是为什么他们不被认为是“最佳做法”。

+1

隐藏字段可能合法,非常“最佳实践”使用,如携带会话ID或CSRF令牌。 – 2012-02-21 23:33:50

+0

他们不是“仅仅是一个GUI问题”。您可以编辑隐藏的表单域来更改发送到服务器的数据。 – serk 2012-02-21 23:34:39

+0

我想说的是,从安全角度来看,隐藏领域并不比其他领域更好或更差。 – John3136 2012-02-21 23:35:57

0

除了什么克里斯沙恩说:

什么风险或潜在影响的程度如何? 根据服务器端脚本所做的假设,这可能会非常严重。如果隐藏字段包含user_idusername,并且假设此信息是合法的,那么任何人都可以代表其他人执行操作,只需通过更改表单字段,如Chris Shain所解释的。

+0

那是什么与“用户名”?他具体告诉我们这些隐藏的字段有哪些值,并且它们都不是“用户名”。 – 2012-02-21 23:36:29

+1

我猜测的原始开发人员知道不要在隐藏字段中包含用户标识或用户名。但是,有*许多*主键,例如行ID,通过隐藏字段传递。我不知道(没有更彻底的调查)是否在访问或更新数据之前检查当前用户的权限。不过,我想知道,鉴于所有这些都在登录屏幕后面,所有这些问题都无关紧要吗? – 2012-02-22 16:00:08

+1

@JasonLuttrell取决于。如果我可以获得登录(任何登录),那么我可以编辑这些行ID字段并提交表单以访问潜在的敏感数据吗? – 2012-02-22 16:09:21