检查 JSP 欢迎文件中的 getQueryString 方法的有效配置

此规则将检测 Web 模块的 JSP 欢迎文件中的方法调用 request.getQueryString() 。 将标记这些调用,这样 用户就可以验证正确的用法并避免查询字符串的 null 值 。

在 WebSphere 中,方法 request.getQueryString() 将在以下情况下返回 null:直接调用欢迎文件、 通过转发调用欢迎文件 或者使用未在 URL 中包含欢迎文件名称的查询字符串。 例如,如果欢迎文件为 index.jsp,并且用户输入 URL(或 另一个系统组件转发到 URL):http://mycompany.com/?param=value 那么 WebSphere 将向 index.jsp 发送请求。 但是,index.jsp 中的调用 request.getQueryString() 将返回 null,而不是返回 param=value。 这仅适用于 web.xml 部署描述符中定义的欢迎文件。

用户可以采用三种方式在 JSP 欢迎文件中获取查询字符串值:

  1. 确保 URL 包含 JSP 欢迎文件名。 例如, 将 URL 从 http://mycompany.com/?param=value 更改为 http://mycompany.com/index.jsp?param=value。 此解决方案对转发至 JSP 的组件有效, 但对外部用户(可以直接输入 URL,例如,使用 Web 浏览器) 可直接访问的 JSP 欢迎文件 无效。
  2. 用户可以通过调用 request.getAttribute("javax.servlet.forward.query_string") 来获取查询字符串 而不能通过调用 request.getQueryString() 获取查询字符串。
  3. 用户可以将 Web 容器属性中的 WebSphere 定制属性 com.ibm.ws.webcontainer.provideQStringToWelcomeFile 设置为 true。 将此属性设置为 true 将更改容器的行为以将查询字符串 传递到欢迎文件。

有关更多信息,请参阅: