gpt4 book ai didi

java - 如何在 dto 属性上使用 SafeHtml 注释?

转载 作者:行者123 更新时间:2023-12-02 09:57:48 25 4
gpt4 key购买 nike

我有一个从另一个 API(反编译类)获取的 dto,其中一个字符串字段被标记为 SafeHtml 以防止用户注入(inject) HTML 脚本。

@NotNull
@SafeHtml(
whitelistType = WhiteListType.NONE,
groups = {Default.class}
)
@ApiModelProperty(
value = "The label of customer",
required = true
)
private String label;

但是当我通过 postman 或前端发送请求时 - 例如 <script>alert('blabla')</script> - 它仍然接受此输入并执行。

这里似乎出了什么问题?其他工作示例是项目自己的 dto 类,但在这个示例中,这个 dto 是来自另一个 api 的反编译类,那么这可能是其原因吗? (我不这么认为,因为这个 dto 的 api 也接受它)那么出了什么问题?

或者仅仅指定 SafeHtml 还不够,我还需要做更多的事情吗?

编辑:我的 Controller 是:

        @PostMapping("customer/save")
@ApiOperation("Adds customer")
public ResponseEntity<CustomerDto> saveCustomer(
@ApiParam("Customers to save") @RequestBody CustomerDti customerDto) {

return ResponseEntity.ok(customerService.saveCustomer(customerDto);
}

并注意:如果我将 safehtml 放在我的模型类上,它可以工作,但我不想要它。我想在请求到来时立即拒绝该请求,因此我需要在 dto 类上禁用它。

最佳答案

如上所述,约束注释是“按需”验证的。
在您的情况下,您必须添加 @Valid 注释来验证请求:

@PostMapping("customer/save")
@ApiOperation("Adds customer")
public ResponseEntity<CustomerDto> saveCustomer(
@ApiParam("Customers to save") @RequestBody @Valid CustomerDti customerDto) {

return ResponseEntity.ok(customerService.saveCustomer(customerDto);
}

关于java - 如何在 dto 属性上使用 SafeHtml 注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55863627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com