Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

改善 http 服务请求路径相关的一些缺陷#718

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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Open
House-Men wants to merge1 commit intoithewei:master
base:master
Choose a base branch
Loading
fromHouse-Men:patch-3

Conversation

@House-Men
Copy link
Contributor

添加 hv_normalize_path 函数到 hbase.h

实用的文件路径规范化修剪处理函数,解决路径相关缺陷的关键实现。

支持 http 合法相对路径请求

优化 http 服务器相对路径文件缓存映射键

因为内部文件缓存map的key是文件路径,而未经规范化处理的路径格式存在对相同的文件形成无数种字符变化,易造成原本个位数的真实有效文件被外网恶意请求分配出无数个文件缓存造成内存影响,同时也避免了Windows相比Linux的路径兼容性严格程度不同导致的末尾反斜杠不应该访问成功的请求却能够open成功。

修复误报“/..file”正常文件路径 bug

某些文件确实前面几个点符号造成被误判为相对父路径从而终止了请求。

add hv_normalize_path function to hbase.hsupport http legal relative path requestoptimize http server path file cache map keyfix false positives '/..file' normal path bug
std::string path = req->Path();
constchar* req_path =path.c_str();
//path safe check
if (req_path[0] !='/' ||strstr(req_path,"/..") ||strstr(req_path,"\\..")) {
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

这里删除了默认的path safe check,会造成能够访问任意上级目录文件

Copy link
ContributorAuthor

@House-MenHouse-MenApr 16, 2025
edited
Loading

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

hv_normalize_path 函数的处理不会允许访问不合法的上级目录
其中包括下面这段代码片段
while (--pos > 0) {
if (path[pos - 1] == '/') break;
}
if (pos < 1) return 0;
此处对相对父目录的处理是不会允许超出path / 根目录以上的目录层级,而且规范化处理后的path也是不存在/.. \..此类字符串存在的。

Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment

Reviewers

@itheweiitheweiithewei left review comments

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

2 participants

@House-Men@ithewei

[8]ページ先頭

©2009-2025 Movatter.jp