Proxy Error The proxy server received an invalid response from an upstream server.

apache报错
Proxy?Error
The?proxy?server?received?an?invalid?response?from?an?upstream?server.
The?proxy?server?could?not?handle?the?request?GET?/.
Reason:?Error?reading?from?remote?server

apache官网文档:
For circumstances where mod_proxy is sending requests to an origin server that doesn’t properly implement keepalives or HTTP/1.1, there are two environment variables that can force the request to use HTTP/1.0 with no keepalive. These are set via the SetEnv directive.
These are the force-proxy-request-1.0 and proxy-nokeepalive notes.
去百度翻译去吧;
解决方案:
VirtualHost 绑定文件中添加

SetEnv force-proxy-request-1.0.1
SetEnv proxy-nokeepalive 1

今天帮一个客户解决这个问题,没找到VirtualHost 文件,去php.ini里面修改了,问题解决了。

php目录树读取文件创建修改和最后访问时间生成tree

php目录树读取文件创建修改和最后访问时间生成tree方便维护时取必要的参数看文件时间等等,代码如下:

<?php
error_reporting(E_ERROR);
function traverse($path = '.') {
$tree = $_SERVER["DOCUMENT_ROOT"]."/tree.html"; //写入tree文件路径
$current_dir = opendir($path); //opendir()返回一个目录句柄,失败返回false
while(($file = readdir($current_dir)) !== false) { //readdir()返回打开目录句柄中的一个条目
$sub_dir = $path . DIRECTORY_SEPARATOR . $file; //构建子目录路径
if($file == '.' || $file == '..') {
continue;
} else if(is_dir($sub_dir)) { //如果是目录,进行递归
$str1 = '目录: ' . $file . date("创建时间:Y-m-d H:i:s",filectime($path)) . date("修改时间:Y-m-d H:i:s",filemtime($path)) . date("最后访问时间:Y-m-d H:i:s",fileatime($path)) . '<br>';
file_put_contents($tree,$str1,FILE_APPEND);
traverse($sub_dir);
} else { //如果是文件,直接输出
$wenjian = $path . '/' . $file;
$str2 = '文件:' . $path . ': ' . $file . date("创建时间:Y-m-d H:i:s",filectime($wenjian )) . date("修改时间:Y-m-d H:i:s",filemtime($wenjian)) . date("最后访问时间:Y-m-d H:i:s",fileatime($wenjian)) . '<br>';
file_put_contents($tree,$str2,FILE_APPEND);
}
}

}

traverse($_SERVER["DOCUMENT_ROOT"]);
echo "<a href='tree.html'>查看目录树</a>";

phpweb伪静态页面注入修复

今天用360和网上提供的一个防注入和跨站漏洞文件修复phpweb注入漏洞,其实默认已经是修复了,但是360还是提示高危漏洞,要有正确输出才可以,字符串已经过滤了,应该提示路径暴露却提示高危phpweb伪静态页面注入漏洞,调用的核心文件加密了,改不了,只有另想他法了。看了下提交的$_GET只有key键值,把键值提取出来过滤下sql语句就好,另外也可以判断数据库中是否存在这条记录,以下是防护代码:

foreach ($_GET as $key => $value){
$id=str_replace("_html","",$key);
}

$getfilter="'|(and|or)\\b.+?(>|<|=|in|like)|\\/\\*.+?\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)";

if(preg_match("/".$getfilter."/is",$id)==1){
die("有注入");
}
$sqlaq="select * from pwn_page where id=".$id;
$result = mysql_query($sqlaq);

if(!$result){
print "没有此条记录!";
exit;
}