HTML转义字符串

时间:2017-09-18 17:26:03

标签: java spring groovy

Spring有htmlEscape来逃避用户输入中可能不安全的HTML。我想将htmlEscape作为注释应用于后端基于Spring的代码(similar concept)。这有助于防止XSS攻击。

class MyCreateRequestDoc {
    @NotBlank(message = 'A name must be specified')
    @AsSafeHtml
    String name

我相信这需要一个AOP模式,但我不知道如何在Java Spring中实现这样的东西。

我开始时:

package com.my.company.services..security

import groovy.util.logging.Slf4j
import org.aspectj.lang.ProceedingJoinPoint
import org.aspectj.lang.annotation.Around
import org.aspectj.lang.annotation.Aspect
import org.springframework.stereotype.Component
import org.springframework.web.util.HtmlUtils

@Aspect
@Slf4j
@Component
class AsSafeHtmlAspect {
  @Around("@within(com.my.company.services.security.AsSafeHtml)")
  void assertProperty(ProceedingJoinPoint pjp){
      var input = 'get this from somewhere'
      return toSafeHtml(input) //return?
  }

  private String toSafeHtml(input) {
      return HtmlUtils.htmlEscape(input)
  }
}

以上Around中使用的相关注释:

package com.my.company.services.security

import java.lang.annotation.Retention
import java.lang.annotation.RetentionPolicy

@Retention(RetentionPolicy.RUNTIME)
@interface AsSafeHtml {

}

0 个答案:

没有答案