小编Tom*_*mas的帖子

在没有Grails的普通Spring MVC中使用GSP视图

我想在一个普通的Spring MVC应用程序中使用GSP视图而不是JSP/JSTL视图.我已经将groovy.servlet.TemplateServlet添加到web.xml,如下所示:

<servlet>
    <servlet-name>GroovyTemplate</servlet-name>
    <servlet-class>groovy.servlet.TemplateServlet</servlet-class>
    <init-param>
            <param-name>template.engine</param-name>
            <param-value>groovy.text.GStringTemplateEngine</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>GroovyTemplate</servlet-name>
    <url-pattern>*.gsp</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

并设置一个Spring InternalResourceViewResolver来加载GPS文件.到目前为止一切正常,但是为了将模型中的值暴露给模板,我必须做一些技巧(继承TemplateServlet并将它们添加到ServletBinding中).

现在我的下一个障碍是默认情况下JSTL在使用c:out标记时转义XML,Grails有编解码器的概念来自动转义GSP中使用的值.默认情况下,上述模板方法不会逃脱,这需要开发人员非常小心地避免XSS漏洞.

是否有另一种(更好的)使用GSP的方法,包括在不使用Grails的普通Spring MVC应用程序中自动转义?

java groovy spring spring-mvc gsp

9
推荐指数
1
解决办法
3848
查看次数

使用注释从Spring 2.5中的AOP建议访问HttpServletRequest

我试图在Spring论坛和搜索StackOverflow上找到这个问题的答案.我发现很多页面描述了可怕的架构并且要求和我做同样的事情,但是我的预期用法不同所以请耐心等待:-)

我有一个Spring 2.5项目,使用基于注释的表单控制器,基本上是这样的:

@RequestMapping("/edit/someObject")
public String handleSubmit(HttpServletRequest request, HttpServletResponse response, SomeObject someObject, BindingResult result) {

    // Some check here

    if(result.hasErrors()) {
        return "form";
    } else {
        SomeObjectService.update(someObject);
        return "redirect:/view/someObject";
    }
}
Run Code Online (Sandbox Code Playgroud)

在此我检查HttpServletRequest中的一些http属性,如果此属性具有特定值,则使用HttpServletResponse发送重定向.完成此检查的是此应用程序中的很多(但不是全部)表单控制器.我想要做的是创建一个由一些AOP建议处理的@CheckedSubmit注释来执行此检查,然后从控制器中删除HttpServletRequest和HttpServletResponse参数.

我的问题是我不知道如何从这个AOP建议中访问当前的HttpServletRequest和HttpServletResponse而不将这两个作为(未使用的)参数用于带注释的方法,这是我首先想要避免的.

简介:如何在@RequestMapping带注释的方法上从AOP建议访问HttpServletRequest/Response?

java aop spring annotations

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

使用HttpOnly Cookies的XSS保护是否有效?

我已经对HttpOnly cookie和存在的问题进行了一些研究,可以将XHR请求与TRACE方法结合使用,以获得从服务器回送的cookie值.

对于安全的Web应用程序,我目前有以下设置:

  • 会话cookie在登录时发送,其中设置了安全和httpOnly属性
  • 对完整域禁用TRACE http方法(返回"405 Method not allowed")

为了避免跨站点请求伪造,我在表单的隐藏字段中添加了一个随机键.必须在每个POST请求中返回此密钥才能接受请求.

除此之外,所有HTML都默认使用白名单进行转义,以选择允许的标签和属性,但要说明为什么这还不够:我们之前允许使用span上的style-attribute(例如为文本着色),可以用以下方式在Internet Explorer中传递javascript:

<span style="width: expression(alert('Example'));"> </span>
Run Code Online (Sandbox Code Playgroud)

然后是最后一个问题:有人能指出这个设置中可能存在缺陷的任何缺陷或建议吗?或者您使用相同或完全不同的方法?

已知问题:

  • 并非所有浏览器都支持httpOnly
  • 过滤css JS表达式是不够的,@ import(外部样式表)也可以工作

security cookies httponly xmlhttprequest

3
推荐指数
1
解决办法
2401
查看次数