2

我正在增强一个遗留系统(我没有帮助构建),并想从其他人那里了解我注意到的某些事情是否是合法的安全问题。

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

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

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

感谢您的反馈意见!

4

3 回答 3

2

很可能不安全。隐藏的表单字段是一种实现方式。

具体来说,您不能依赖与原始 HTML 呈现它的值相同的表单字段的值被发送回服务器。

如果服务器实施了对策,例如对输入、校验和、散列、加密等进行清理,则使用可能会更加安全。例如,ASP.NET 使用 ViewState 执行此操作。

那就是说...

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

我还强烈建议在他的回答中阅读马特关于潜在风险分析的观点。

于 2012-02-21T23:32:05.793 回答
0

隐藏字段只是一个 GUI 问题 - 您在屏幕上看不到它们,但它们仍然存在。这使它们与任何其他(可见)字段一样容易受到攻击。这就是为什么它们不被视为“最佳实践”的原因。

于 2012-02-21T23:32:50.730 回答
0

除了 Chris Shain 所说的:

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

于 2012-02-21T23:35:09.870 回答