java 自定义xss校验注解实现

这篇具有很好参考价值的文章主要介绍了java 自定义xss校验注解实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

自定义一个注解@Xss。名字随意

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 自定义xss校验注解
 * 
 * @author chfatech
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(value = { ElementType.METHOD, ElementType.FIELD, ElementType.CONSTRUCTOR, ElementType.PARAMETER })
@Constraint(validatedBy = { XssValidator.class })
public @interface Xss
{
    String message()

    default "不允许任何脚本运行";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};
}

validator校验类:XssValidator。这个校验类要和上面的@Xss注解上的

@Constraint(validatedBy = { XssValidator.class })对应

import com.chfatech.common.utils.StringUtils;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 自定义xss校验注解实现
 * 
 * @author chfatech
 */
public class XssValidator implements ConstraintValidator<Xss, String>
{
    private static final String HTML_PATTERN = "<(\\S*?)[^>]*>.*?|<.*? />";

    @Override
    public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext)
    {
        if (StringUtils.isBlank(value))
        {
            return true;
        }
        return !containsHtml(value);
    }

    public static boolean containsHtml(String value)
    {
        Pattern pattern = Pattern.compile(HTML_PATTERN);
        Matcher matcher = pattern.matcher(value);
        return matcher.matches();
    }
}

具体使用在某个字段上加上注解;形如:

@Data
public class HomeQuery {

    @ApiModelProperty(name = "keyword",value = "搜索关键词")
    @Xss
    @SqlInject(message = "{exists.illge.word}")
    private String keyword;

    @ApiModelProperty(name = "sdgId",value = "sdg主键id")
    private Long sdgId;
}

然后在控制层中增加@Validated注解校验就可以了

java 自定义xss校验注解实现,java,xss

 以上代码实现后。会自动针对某些增加了@Xss字符进行校验。如果想增加sql注入校验。以上方法类似文章来源地址https://www.toymoban.com/news/detail-634483.html

到了这里,关于java 自定义xss校验注解实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • spring-boot 请求参数校验:注解 @Validated 的使用、手动校验、自定义校验

    spring-boot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理。 spring-boot已经引入了基础包,所以直接使用就可以。 在属性上添加校验注解: 在Controller上添加 @Validated 注解 校验未通过时,可能看到: 在 @Validated 后面紧跟着追加BindingResult,

    2023年04月16日
    浏览(93)
  • Controller层自定义注解拦截request请求校验

    一、背景 笔者工作中遇到一个需求,需要开发一个注解,放在controller层的类或者方法上,用以校验请求参数中(不管是url还是body体内,都要检查,有token参数,且符合校验规则就放行)是否传了一个token的参数,并且token符合一定的生成规则,符合就不予拦截,放行请求,否则

    2024年01月17日
    浏览(45)
  • Springboot——@valid 做字段校验和自定义注解

    再项目开发中,针对前端传递的参数信息,有些接口中需要写大量的 if 判断,导致代码臃肿,不够优雅。 此时,可以使用 @Valid 实现基本的字段校验。 springboot 2.3之前 ,直接进行开发即可,无需引用额外的依赖 集成在 spring-boot-starter-web 中。 springboot 2.3之后 需要额外引入

    2023年04月26日
    浏览(50)
  • Java实现自定义注解

    (1)Java实现自定义注解其实很简单,跟类定义差不多,只是属性的定义可能跟我们平时定义的属性略有不同,这里会给大家详解,先来看代码: 上面代码就实现了一个 自定义注解 , 实现自定义注解需要最少指定 两个 基本条件 : ①注解的作用范围②注解的生命周期 ,那

    2023年04月19日
    浏览(28)
  • Java注解源码分析,实现自定义注解通过反射获取

    JDK5.0 引入,可以通过反射机制动态获取,大量应用于java框架中 内置注解 @Override 重写父类方法时 @Deprecated 使用它存在风险,可能导致错误 可能在未来版本中不兼容 可能在未来版本中删除 一个更好和更高效的方案已经取代它 @SuppressWarnings 告诉编译器忽略指定的警告,不用在

    2024年02月03日
    浏览(30)
  • Java 4种校验注解(值校验、范围校验、长度校验、格式校验)

    1 值校验 1.1 @NotNull注解 被注解的元素必须不为空,一般 用于数值类型的参数校验 @NotNull(message = \\\"用户编号不能为空\\\") private Integer userId; 1.2 @NotBlank注解 验证注解的元素值不为空(不为null、去除首位空格后长度为0),并且类型为String。 @NotBlank(message = \\\"用户名称不能为空\\\") pr

    2024年02月16日
    浏览(33)
  • springboot使用@Valid 和 @Validated 注解校验详解以及编写一个自定义全局异常类

    全局异常处理类 验证: ============================================== 导入所需要的包: 如果你是 springboot 项目,那么可以不用引入了,已经引入了,他就存在于最核心的 web 开发包里面。 如果你不是 springboot 项目,那么引入下面依赖即可: 新建三个实体类 实现一: 使用@Valid注解修

    2024年02月10日
    浏览(30)
  • 【Java】在实体类中常用的注解校验

    注解 说明 @Null 只能为null @NotNull(message = “id不能为空”) 必须不为null,可以为空字符串 @Min(value) 必须为一个不小于指定值的数字 @Max(value) 必须为一个不大于指定值的数字 @NotBlank(message = “姓名不能为空”) 验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同

    2024年02月04日
    浏览(78)
  • @NotNull @NotEmpty @NotBlank java校验注解 validation

    1.@NotNull 不能为 null,但可以为 empty,一般用于判空 Integer 类型等基本数据类型,而且被其标注的字段可以使用 @size、@Max、@Min 对数值进行大小的控制 2.@NotEmpty 不能为 null,且长度必须大于 0,一般用于集合类或者数组上,也有人用于String(不推荐) 3.@NotBlank 只能作用在接收的

    2024年02月10日
    浏览(31)
  • 注解实现校验接口传参是否超出取值范围

    写接口,Dto里很多字段要检验传参范围,自定义个注解来校验。 注解定义代码: 实现思路是使用JSR303校验框架的@Constraint注解,实现ConstraintValidator接口,定义初始化和参数校验逻辑。 调用下: 借用 @JsonCreator 注解,反序列化前端传参成一个枚举对象时,进行校验。 此时Dt

    2024年01月21日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包