Sa-Token icon indicating copy to clipboard operation
Sa-Token copied to clipboard

satoken 在过滤特殊字符时返回非法请求,但是状态码是200的问题

Open adwyz opened this issue 1 year ago • 5 comments

使用版本:

1.38.0

涉及的功能模块:

校验请求 path 的算法

测试步骤:

  • 我经过以下步骤测试: 路径中输入包含点(.)的内容比如:/api/.adm/adm.log

  • 得出以下结果: 非法请求:/api/.adm/adm.log 状态码为:200

  • 其中第 xx 行的代码输出表现 和文档上描述的不一致:

  • 我的理解是: 我认为这个过滤应该是在404 ,因为系统不存在这个路由。

请问,是我的理解不对,还是文档出了问题?

adwyz avatar Sep 20 '24 03:09 adwyz

这是被过滤器拦了,带 /. 的是不安全 path,不予放行

click33 avatar Sep 20 '24 03:09 click33

不予放行我能理解,但是这个路由其实不存在,应该先报404 如果不予放行,状态码是不是应该也是500 而不是200 ,如果是200 的话,很多安全评测软件就过不了。

adwyz avatar Sep 20 '24 03:09 adwyz

我差了一下httpstatus 状态码, 403 表示服务器理解请求客户端的请求,但是拒绝执行此请求 ,是不是用这个也挺合适的。

adwyz avatar Sep 20 '24 03:09 adwyz

那你可以自定义一下path校验不通过时的处理方案

SaStrategy.instance.requestPathInvalidHandle = (e, extArg1, extArg2) -> {} 自定义响应状态和报文

click33 avatar Sep 20 '24 03:09 click33

好的,感谢

adwyz avatar Sep 20 '24 03:09 adwyz