小编msa*_*din的帖子

使用includeViewParams的JSF2重定向允许用户输入解析为文本字段的EL表达式

我有一个定义视图参数的JSF2 XHTML页面,这允许一个具有可收藏的URL.XHTML页面包含以下参数:

<f:metadata>
  <f:viewParam name="searchName" value="#{nbsearchpage.searchName}" />
  <!-- More view parameters omitted here for brevity -->
  <f:event listener="#{nbsearchpage.searchPreRender}" type="javax.faces.event.PreRenderViewEvent" />
</f:metadata>
Run Code Online (Sandbox Code Playgroud)

在同一页面上,我有一个文本字段和一个允许用户更改searchName的按钮:

<h:form id="some-id">
  <h:inputText value="#{nbsearchpage.searchName}" />
  <h:commandButton value="search" action="#{nbsearchpage.search}" />
</h:form>
Run Code Online (Sandbox Code Playgroud)

最后,nbsearchpage bean中的action方法search()返回同一页面,但包括参数:

?faces-redirect=true&amp;includeViewParams=true
Run Code Online (Sandbox Code Playgroud)

它为用户提供了一个很好的URL.当用户在搜索字段中输入"IBM"时,URL将重定向到

?searchName=IBM 
Run Code Online (Sandbox Code Playgroud)

它非常好用.但现在用户可以在searchName文本字段中输入EL表达式,并评估EL表达式.例如,当用户在文本字段中输入"#{2 + 2}"时,URL将被重定向到

?searchName=4
Run Code Online (Sandbox Code Playgroud)

这就是我认为我们不应该做的事情,允许用户出于安全原因输入EL表达式.我正在使用Glassfish 3.1.1.

有任何想法如何防止这种自动EL解析?我认为JSF2中的视图参数概念存在一个根本性的缺陷并且具有重定向功能?我遇到了与重定向无法生存的视图范围相同的问题,为此我必须创建一个自己的范围.(我本可以使用闪存范围).

redirect el jsf-2 viewparams

13
推荐指数
1
解决办法
6618
查看次数

web.xml中的安全性约束,用于没有角色成员身份的已认证用户

我非常绝望,因为我认为必须有一个简单的解决方案来解决我的问题,但我正在寻找 - 无济于事.

我在Glassfish 3.1.1中使用自定义域.此自定义领域(实现AppservPasswordLoginModuleInterface)从HTTPS请求中获取安全令牌,验证安全令牌,然后将用户返回到Glassfish.

问题是安全令牌不包含任何组,这意味着方法public String [] getGroupsList()或自定义域返回一个空列表(正确,因为安全令牌中没有角色).

也就是说,我希望有一个安全约束,只有经过验证的用户才能登录.我知道我可以在web.xml中使用以下约束:

<security-constraint>
  <web-resource-collection>
    <web-resource-name>mywebapp</web-resource-name>
    <url-pattern>/*</url-pattern>
  </web-resource-collection>
  <auth-constraint>
    <role-name>Users</role-name>
  </auth-constraint>
</security-constraint>
Run Code Online (Sandbox Code Playgroud)

但是因为我没有任何组,所以我无法将任何组映射到角色,因此我不能将auth-constraint与role-name一起使用.

在web.xml中是否有一种方法可以定义只允许经过身份验证的用户,忽略它们所处的角色并忽略它们是否处于任何角色.

有几个我无法实现的解决方案:

  • 我无法将底层LDAP更改为包含角色,因为LDAP模式以及LDAP用户映射到安全性的方式会使我们超出范围.
  • 我必须使用当前的自定义域处理程序,我不能用我自己的一个只替换默认组替换它.我曾经尝试过这次,但它确实奏效了.但是我无法用自己的自定义域替换现有的自​​定义域,因为自定义域应该是通用的.

但我真的认为web.xml中应该有一种方法可以说:忽略所有组和角色,我只想要一个经过身份验证的用户?

任何帮助,将不胜感激.

java web.xml glassfish jaas

12
推荐指数
2
解决办法
1万
查看次数

标签 统计

el ×1

glassfish ×1

jaas ×1

java ×1

jsf-2 ×1

redirect ×1

viewparams ×1

web.xml ×1