Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
adwyz opened this issue Sep 20, 2024 · 5 comments

Comments

@adwyz
Copy link

adwyz commented Sep 20, 2024

使用版本:

1.38.0

涉及的功能模块:

校验请求 path 的算法

测试步骤:

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

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

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

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

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

@click33
Copy link
Collaborator

click33 commented Sep 20, 2024

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

@adwyz
Copy link
Author

adwyz commented Sep 20, 2024

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

@adwyz
Copy link
Author

adwyz commented Sep 20, 2024

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

@click33
Copy link
Collaborator

click33 commented Sep 20, 2024

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

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

@adwyz
Copy link
Author

adwyz commented Sep 20, 2024

好的,感谢

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants