前言
最近在安恒的漏洞扫描器发现报了一个低危漏洞——表单域隐藏。
该漏洞描述将前端HTML中包含“hidden”属性的字段均视为有低风险存在,并给出建议:检查网页表单中类型为hidden的元素,在服务器端加强校验。
日常认知里,“hidden”属性不是很常用吗(比如前端密码字段),为何存在风险?为此学习并记录一下。
语法简介
首先来了解下HTML hidden 属性:
hidden 属性规定对元素进行隐藏。
隐藏的元素不会被显示。
如果使用该属性,则会隐藏元素。
可以对 hidden 属性进行设置,使用户在满足某些条件时才能看到某个元素(比如选中复选框,等等)。然后,可使用 JavaScript来删除 hidden 属性,使该元素变得可见。
来看看一个语法入门案例:
将hidden属性删除,效果如下:
风险案例
如图,用户可以通过浏览器F12开发者工具,让隐藏的区块显示出来,并很方便的修改表单的值……
有时候前端会使用隐藏域记录一些关键值(比如修改一条信息时隐藏域记录该信息的ID,提交后根据这个ID做数据更新),可用户一旦修改这些值,再提交,那不就出乱子了,如何解决?
修改UID
前端页面如下: