我正在增强遗留系统(我没有帮助构建),并希望从其他人那里了解我注意到的某些事情是否是合法的安全问题。
首先,通过登录来保护应用程序。但是,一旦用户登录,整个应用程序中有11个页面,其中隐藏字段存储文件名的值以及下载路径。
Javascript用于自动提交表单,然后用户下载并将文件保存到他或她的计算机。我认为这个值可以改变,用户会在不知不觉中下载恶意文件。
此外,还有许多页面将引用页面保存在隐藏字段中,以便用户可以在保存表单时返回上一页面。如果这些是合法的问题,怎么会这样?如果可能的话,他们将如何受到攻击?什么是风险或潜在影响?我问的原因是我可以提出应用程序需要修复的情况,如果是的话。只是说“这不是一种最佳实践”并不是一个足够好的理由。
感谢您的反馈!
答案 0 :(得分:2)
很可能不安全。隐藏的表单字段是一个非常好的实现。
具体而言,您不能依赖于使用与原始HTML呈现的值相同的值发布回服务器的表单字段的值。
如果服务器实施诸如输入,校验和,散列,加密等的清理之类的对策,则使用可能更安全一些。例如,ASP.NET使用ViewState执行此操作。
那说......
想知道它有多不安全吗?使用Chrome或Firefox开发人员工具将隐藏字段的输入类型属性之一从“隐藏”更改为“文本”,并观察文本字段(您可以在其中更改它并提交您喜欢的任何值)。
我还强烈建议在他的回答中阅读Matt关于潜在风险分析的观点。
答案 1 :(得分:0)
隐藏字段只是一个GUI问题 - 您在屏幕上看不到它们,但它们仍然存在。这使得它们与任何其他(可见)字段一样可行。这就是为什么他们不被视为“最佳实践”。
答案 2 :(得分:0)
除了Chris Shain所说的话:
风险程度或潜在影响是什么?
根据服务器端脚本的假设,其含义可能非常严重。如果隐藏字段包含,例如user_id
或username
,并且假设此信息是合法的,那么任何人都可以代表其他任何人执行操作,只需更改表单字段,如Chris Shain所解释。