很多小伙伴高高兴兴的做了一个网站放到阿里云上,以为大功告成了,结果收到两条短信,说你的网站有高危漏洞,顿时一阵乌云浮上心头。今天说说怎么修复这个漏洞。
打开你的网站,进入根目录。根据这个路径找到thinkphp\library\think\Request.php文件。
打开它,搜索一下代码:
public function method($method = false) {if (true === $method){// 获取原始请求类型 return $this->server('REQUEST_METHOD') ?: 'GET'; } elseif (!$this->method) {if (isset($_POST[Config::get('var_method')])) {$this->method = strtoupper($_POST[Config::get('var_method')]); $this->{$this->method}($_POST); } elseif (isset($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'])){$this->method = strtoupper($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE']); } else {$this->method = $this->server('REQUEST_METHOD') ?: 'GET'; } } return $this->method; }
然后把它替换成:
public function method($method = false) {if (true === $method) {// 获取原始请求类型 return $this->server('REQUEST_METHOD') ?: 'GET'; } elseif (!$this->method) {if (isset($_POST[Config::get('var_method')])){ $method = strtoupper($_POST[Config::get('var_method')]); if (in_array($method, ['GET', 'POST', 'DELETE', 'PUT', 'PATCH'])){$this->method = $method; $this->{$this->method}($_POST); } else {$this->method = 'POST'; } unset($_POST[Config::get('var_method')]); } elseif (isset($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'])){$this->method = strtoupper($_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE']); } else {$this->method = $this->server('REQUEST_METHOD') ?: 'GET'; } } return $this->method; }
然后就OK了,修改之前记得备份噢。
如果内容有帮助,就点个赞吧!