代码之家  ›  专栏  ›  技术社区  ›  rmeertens

XSS攻击:更改Spring Boot Crudepository中引发的异常?

  •  2
  • rmeertens  · 技术社区  · 7 年前

    我正在为一个应用程序开发一个API,该应用程序能够根据其solutionID(是一个整数)找到所谓的ProductSolutions。

    @Repository
    public interface ProductSolutionRepository extends CrudRepository<ProductSolution, String> {
    
        public List<ProductSolution> findBySolutionId(@Param("solutionId") int solutionId);
    }
    

    发送带有字符串而不是整数的请求时( localhost:8080/api/v1/productSolutions/search/findBySolutionId?solutionId=dangerousscript )API返回错误,并显示以下消息:

    “危险脚本”;嵌套异常为 Java语言lang.NumberFormatException:对于输入字符串: \“危险脚本”`

    虽然Chrome和Firefox似乎很巧妙地避开了输入(并且不执行任何脚本),但人们仍然担心我们的API可能被用于跨站点脚本攻击。

    解决这个问题的一个简单方法是删除用户在抛出异常时提供的输入,或者创建自己的错误页面。我可以用什么方式配置spring boot以引发自定义异常?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Krzysztof Atłasik    7 年前

    您可以使用 @ExceptionHandler 课堂上用注释 @ControllerAdvice .

    您可以使用 @ResponseBody (如果您没有使用 @RestController

    @ControllerAdvice
    public class RestExceptionControllerAdvice {
    
        @ExceptionHandler(NumberFormatException.class)
        public ErrorResponse handleSearchParseException(NumberFormatException exception) {
           // do whathever you want
       }
    
    }