为什么primefaces p:password在页面刷新时会丢失其值



在我的项目中,我使用的是素数面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源的攻击者来说都是易于读取的!

希望这能有所帮助!玩得高兴

相关内容

  • 没有找到相关文章

最新更新