在我的项目中,我使用的是素数面p:password组件。一切都很好,除了一件事,当我刷新页面时,它会丢失值。有人能说出背后的安全原因吗?
谢谢朋友们。
假设密码字段包含敏感数据,因此它们不会在页面重新加载时再次显示
原因是敏感数据通常不会被浏览器缓存(取决于您的设置),因此在触发请求后不可用。这意味着你的密码输入在任何时候都不会成为你页面的一部分,只会提交到它的附件中
initial page-load:
<p:password .../> |-- rendered to --> <input type="secret" value="" />
after page-reload:
<p:password .../> |-- rendered to --> <input type="secret" value="" />
正如您所看到的,渲染的html输出的value属性为空,当您输入密码时,它只会发生在客户端,当提交表单时,值会被发送到服务器,客户端输入会被清除。
要使您的输入持续用于多个请求,只需将p:password
组件的redisplay
属性设置为true
。
initial page-load:
<p:password redisplay="true" .../> |-- rendered to --> <input type="secret" value="" />
after page-reload:
<p:password redisplay="true" .../> |-- rendered to --> <input type="secret" value="inputPW" />
请注意,在使用集合redisplay="true"
重新加载后,提交的密码将成为html dom的一部分,并且对于任何来自html源的攻击者来说都是易于读取的!
希望这能有所帮助!玩得高兴