安全编码/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 可以做到这一点