安全编码/Primefaces:p:inputText 的抗操纵验证
Secure coding / Primefaces: manipulation-resistant validation of p:inputText
我正在寻找用户输入的抗操纵验证。
<p:inputText id=myinputText maxlength="16" value="#{basicView.text}" />
输入的客户端限制,如 maxlength="16" 或提交验证可以被 JavaScript 欺骗。
我可以通过以下代码避免攻击者使用 1GB 初始化 basicView.text 或使用的 Primefaces 服务器端验证器的参数吗:
$("#myinputText").val('x'.repeat(1024*1024*1024));
防止攻击者导致 OutOfMemory 的最佳方法是什么?
针对此类问题的保护始终 'multi layer'
客户端
在浏览器的当前状态下,客户端操纵抵抗是不可能的(我认为将来也不会改变)。
应用级别
您的应用程序也通过让 JSF 执行服务器端验证得到部分保护。
服务器端
如果您认为这种保护还不够,大多数 java-ee 服务器(和 servlet 容器)也有 'maximum post size' 保护。正常默认值在 10MB 范围内。如果您将此设置更高,例如允许通过 http 上传大文件,那么请检查您是否可以在每个 url 的基础上配置它,如果不能,则可能在每个应用程序的基础上,这样您就可以,例如使用单独的上传部分将应用程序一分为二。
服务器与客户端之间
在两者之间有一个额外的层(总是?)很好
- 是否终止 SSL
- 同时请求中的 DOS 保护等
- Loadbalancing/failover
- 每个 url 最大 post 大小的保护(我知道例如用作反向代理的 apache http 可以做到这一点
我正在寻找用户输入的抗操纵验证。
<p:inputText id=myinputText maxlength="16" value="#{basicView.text}" />
输入的客户端限制,如 maxlength="16" 或提交验证可以被 JavaScript 欺骗。 我可以通过以下代码避免攻击者使用 1GB 初始化 basicView.text 或使用的 Primefaces 服务器端验证器的参数吗:
$("#myinputText").val('x'.repeat(1024*1024*1024));
防止攻击者导致 OutOfMemory 的最佳方法是什么?
针对此类问题的保护始终 'multi layer'
客户端
在浏览器的当前状态下,客户端操纵抵抗是不可能的(我认为将来也不会改变)。
应用级别
您的应用程序也通过让 JSF 执行服务器端验证得到部分保护。
服务器端
如果您认为这种保护还不够,大多数 java-ee 服务器(和 servlet 容器)也有 'maximum post size' 保护。正常默认值在 10MB 范围内。如果您将此设置更高,例如允许通过 http 上传大文件,那么请检查您是否可以在每个 url 的基础上配置它,如果不能,则可能在每个应用程序的基础上,这样您就可以,例如使用单独的上传部分将应用程序一分为二。
服务器与客户端之间
在两者之间有一个额外的层(总是?)很好
- 是否终止 SSL
- 同时请求中的 DOS 保护等
- Loadbalancing/failover
- 每个 url 最大 post 大小的保护(我知道例如用作反向代理的 apache http 可以做到这一点