6 changed files with 93 additions and 3 deletions
			
			
		@ -0,0 +1,24 @@ | 
				
			|||||||
 | 
					package com.ruoyi.common.utils.bean; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.Set; | 
				
			||||||
 | 
					import javax.validation.ConstraintViolation; | 
				
			||||||
 | 
					import javax.validation.ConstraintViolationException; | 
				
			||||||
 | 
					import javax.validation.Validator; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * bean对象属性验证 | 
				
			||||||
 | 
					 *  | 
				
			||||||
 | 
					 * @author ruoyi | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					public class BeanValidators | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    public static void validateWithException(Validator validator, Object object, Class<?>... groups) | 
				
			||||||
 | 
					            throws ConstraintViolationException | 
				
			||||||
 | 
					    { | 
				
			||||||
 | 
					        Set<ConstraintViolation<Object>> constraintViolations = validator.validate(object, groups); | 
				
			||||||
 | 
					        if (!constraintViolations.isEmpty()) | 
				
			||||||
 | 
					        { | 
				
			||||||
 | 
					            throw new ConstraintViolationException(constraintViolations); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,27 @@ | 
				
			|||||||
 | 
					package com.ruoyi.common.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 ruoyi | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					@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 {}; | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,29 @@ | 
				
			|||||||
 | 
					package com.ruoyi.common.xss; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javax.validation.ConstraintValidator; | 
				
			||||||
 | 
					import javax.validation.ConstraintValidatorContext; | 
				
			||||||
 | 
					import java.util.regex.Matcher; | 
				
			||||||
 | 
					import java.util.regex.Pattern; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** | 
				
			||||||
 | 
					 * 自定义xss校验注解实现 | 
				
			||||||
 | 
					 *  | 
				
			||||||
 | 
					 * @author ruoyi | 
				
			||||||
 | 
					 */ | 
				
			||||||
 | 
					public class XssValidator implements ConstraintValidator<Xss, String> | 
				
			||||||
 | 
					{ | 
				
			||||||
 | 
					    private final String HTML_PATTERN = "<(\\S*?)[^>]*>.*?|<.*? />"; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override | 
				
			||||||
 | 
					    public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) | 
				
			||||||
 | 
					    { | 
				
			||||||
 | 
					        return !containsHtml(value); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean containsHtml(String value) | 
				
			||||||
 | 
					    { | 
				
			||||||
 | 
					        Pattern pattern = Pattern.compile(HTML_PATTERN); | 
				
			||||||
 | 
					        Matcher matcher = pattern.matcher(value); | 
				
			||||||
 | 
					        return matcher.matches(); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
					Loading…
					
					
				
		Reference in new issue