Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html Web安全,是否存在隐藏字段问题(无敏感数据)?_Html_Security_Hidden Fields - Fatal编程技术网

Html Web安全,是否存在隐藏字段问题(无敏感数据)?

Html Web安全,是否存在隐藏字段问题(无敏感数据)?,html,security,hidden-fields,Html,Security,Hidden Fields,我在和同事讨论。我们必须实施一些安全标准。我们知道不能在隐藏字段中存储“敏感、地址、出生日期”信息,但一般来说,在应用程序中使用隐藏字段可以吗 例如: action=goback 与将隐藏字段添加到查询字符串中相比,对此类信息使用隐藏字段似乎更安全。黑客可以对您的应用程序使用的信息少了一条。将字段设置为“隐藏”与安全性几乎无关,应将其视为用户界面决策。任何“黑客”都会读取你的HTML源代码 最好不要显示敏感信息,或者,如果必须的话,使用SSL(防止网络中介截取数据)和一些登录挑战组合(防止未经

我在和同事讨论。我们必须实施一些安全标准。我们知道不能在隐藏字段中存储“敏感、地址、出生日期”信息,但一般来说,在应用程序中使用隐藏字段可以吗

例如:

action=goback
与将隐藏字段添加到查询字符串中相比,对此类信息使用隐藏字段似乎更安全。黑客可以对您的应用程序使用的信息少了一条。

将字段设置为“隐藏”与安全性几乎无关,应将其视为用户界面决策。任何“黑客”都会读取你的HTML源代码


最好不要显示敏感信息,或者,如果必须的话,使用SSL(防止网络中介截取数据)和一些登录挑战组合(防止未经授权的访问)。

我想说,这与将项目放在查询字符串中一样安全。毕竟,人们总是可以在站点上查看源代码(并且没有任何方法可以防止这种情况,因为人们总是可以通过编程方式下载源代码)

这里更好的解决方案是使用在服务器上生成的密钥加密字段名和值,并且只在服务器上生成密钥。除非服务器遭到黑客攻击,否则客户端不会知道该值的名称或其值

当然,因为这是来自客户机的,所以您仍然需要检查返回的数据的有效性,不要想当然地认为它没有以您没有指定的方式被更改


为此,您需要使用哈希来确保值未被篡改。

黑客可以通过拦截代理(或任何数量的工具)轻松访问隐藏字段,就像查询字符串值一样


我不认为使用隐藏字段有什么错,只要它们不用于任何敏感的内容,并且您可以像验证客户端的任何其他值一样验证它们。

如果您公开最终用户无法获得的信息和/或在返回时未对其进行验证,那么这只是一个安全漏洞


相反,我希望将上述信息存储在服务器端会话变量中…

一般来说,不要对敏感数据使用隐藏的表单字段。仅适用于您意识到“接收时”处理不安全的静态非敏感POST数据。我唯一一次使用它们是在接收帖子时呈现和检查会话令牌时存储会话令牌。为了防止CSRF攻击或至少使其更加困难。

从安全角度来看,将数据存储在隐藏字段中与将其存储在查询字符串中完全相同。事实上,如果您的表单使用GET操作,那么不管怎样,它都会在查询字符串中结束


隐藏字段在任何方面都与安全性完全无关;它们只是一种方法,通过这种方法,数据可以存储在表单中,而不必强迫用户查看。它们不提供阻止用户查看的方法。

正如其他人提到的,查询字符串和隐藏字段本质上都是公共数据,用户可以查看

如果将数据放在querystring上,需要记住的一件事是,人们会四处传递URL,因此不应该包含任何特定于当前用户的信息


如果无法直接输入状态,那么最好不要在url中包含状态信息。或者至少您需要处理querystring中的无效状态信息。

隐藏字段并不总是一个问题,但它们应该总是敲响警钟,因为它们有两个潜在问题:

1) 如果数据是敏感的,则会将其公开给客户端(例如,使用代理,或仅查看源代码-尝试并以编程方式防止这种情况是毫无意义的)

2) 如果数据由服务器解释,有知识的用户可以更改它。举一个愚蠢的例子,如果隐藏字段包含用户的银行余额,他们可以使用代理或一些非标准客户端使服务器认为他们的银行余额是他们选择的任何东西

第二个漏洞是webapps中漏洞的一大来源。与会话相关联的数据应该保存在服务器端,除非您有在服务器上验证它的方法(例如,如果服务器对字段进行了签名或加密)


如果你确信你没有掉进这两个陷阱中,它们就可以使用了。根据经验,我不会使用隐藏字段,除非您希望在查询字符串中看到数据,或者javascript需要它们进行处理。在后一种情况下,您仍然需要确保服务器正在验证,但不要假设客户端将运行您的javascript。

除了其他海报提供的所有其他有用建议之外,我还想补充一点,隐藏字段使您的应用程序不象url查询字符串值那样容易受到SQL注入攻击。一如既往,清理你的输入。

考虑加密隐藏字段的名称和值,因为篡改检查的目的是因为黑客仍然能抓住你隐藏的字段并按照他们想要的方式操作。

你会考虑dBASE记录的ID是否敏感?@ DimITRISPAPAGRIGURU,是的,假设您有一个用户更新表单来更新用户数据,并且您将userID作为一个隐藏字段。然后用户可以通过浏览器开发人员工具更改该用户ID值,瞧,用户刚刚更新了另一个用户数据,他们可能没有这样做的权限。我知道这是一个很晚的答案,但我希望它能帮助别人在未来