我使用Fortify源代码扫描程序完成了源代码扫描(ASP)。
许多隐藏字段显示为漏洞。像这样:
<input type="hidden" name="ToSave" value="0" />
如何修复此问题以接收通过测试?
提前致谢 马赫什
答案 0 :(得分:1)
如果这是应用程序状态,并且未被用户修改:
通过浏览器传递应用程序状态总是一个坏主意,并且是黑客将利用的第一件事。
如果这是应用程序状态:使用正确的ASP会话管理并在将页面发送给用户时在服务器上保存会话状态,并在返回请求时在服务器上查找会话状态。在使用C#的ASP.NET中,您可能会执行以下操作:
Session(“ToSave”) = false;
将响应发送到浏览器时(例如发送页面)。然后,当您收到请求时,因为您正在使用ASP会话管理,会话将具有您设置的状态。
如果这不是应用程序状态,但是在浏览器中由JavaScript计算并在服务器端使用的隐藏字段:
请查看应用程序的设计。我做了大量这些代码审查,并且通常发现应用程序正在用JavaScript做一些事情,只能在服务器端完成。一个例子是计算表格上的测试分数,将该分数放在隐藏字段中并接受服务器上的该字段。另一个例子是计算流程中的“下一页”并将标记放在隐藏字段中。如果您想在浏览器上提供类似评分的内容以方便用户使用,那么就可以在服务器上进行官方计算(以及决定,如果适用)。
攻击者可以轻松查看这些值并创建一个会破坏您的应用程序的请求,或者更糟糕的是,让攻击者获得他或她不应得的东西。
在任何情况下隐藏字段都会缓存在浏览器上,就像任何页面都被缓存一样,因此如果隐藏字段包含您希望用户无法看到的数据,则使用隐藏字段可能不明智。
所以,最重要的是,我同意你不应该使用隐藏字段。