gpt4 book ai didi

java - 使用 ParameterNameAware 接口(interface)避免参数篡改 (Struts2)

转载 作者:太空宇宙 更新时间:2023-11-04 08:03:26 24 4
gpt4 key购买 nike

我正在开发我的 struts2 应用程序来解决参数篡改问题。我听说这可以通过在我的操作中实现 ParameterNameAware 接口(interface)来解决,但我还没有找到解释这种情况的最佳示例。谁能给我提供一个关于如何使用 ParameterNameAware 的好例子。快速答复将不胜感激。

最佳答案

这个接口(interface)的整体思想是维护一个有效参数名称列表,并拒绝任何不在该列表(白名单)中的请求参数。当黑客试图将不需要的表单字段值作为可能在某些情况下执行的隐藏变量包含在内时,这非常有用。例如,包含如此多的表单字段变量(>10000等),可能会在服务器端造成拒绝服务。

实现此功能后,您可以立即拒绝当前请求范围内任何不需要的参数,或者可以更好地控制这种情况。

可能的实现:

实现 ParameterNameAware 接口(interface)并重写其 acceptableParameterName 方法,如下所示:

  public boolean acceptableParameterName(String parameterName) {

boolean allowedParameterName = true ;

if ( parameterName.contains("session") || parameterName.contains("request") ) {

allowedParameterName = false ;

}

return allowedParameterName;
}

您需要在具有 getter 和 setter 方法的表单 bean 中实现此接口(interface)。在这个特定的例子中,如果当前请求包含任何表单字段变量,如请求或 session ,那么这是一个失败的场景。这只是一个典型的例子。此链接中有完整的文档 Class ParametersInterceptor

关于java - 使用 ParameterNameAware 接口(interface)避免参数篡改 (Struts2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12469418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com