在我的项目中,我使用的是primefaces p:password component.Everything正常工作,除了一件事,当我刷新页面时它失去了它的价值.任何人都可以告诉它背后的安全原因.
谢谢朋友.
假设密码字段包含敏感数据,因此在页面重新加载时不会再显示它们.
原因是敏感数据通常不会被浏览器缓存(取决于您的设置),因此在请求被触发后不可用.这意味着您的密码输入在任何时候都不会成为您网页的一部分,而只会被提交到其随附的表单中.
initial page-load:
<p:password .../> |-- rendered to --> <input type="secret" value="" />
after page-reload:
<p:password .../> |-- rendered to --> <input type="secret" value="" />
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,渲染的html输出的value属性为空,当您输入密码时,它只会发生在客户端,当提交表单时,值将被发送到服务器并且客户端输入被清除.
要使输入对多个请求保持持久,只需将组件的redisplay属性设置p:password为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" />
Run Code Online (Sandbox Code Playgroud)
请注意,使用set重新加载后redisplay="true",提交的密码将成为html-dom的一部分,并且对于来自html-source的任何攻击者来说都很容易阅读!
希望这可以帮助!玩得开心!
| 归档时间: |
|
| 查看次数: |
3411 次 |
| 最近记录: |