apache的日志中隐藏了一个安全漏洞,比如你输入了一个关于
http://localhost/meeting/import.php?cmd=admin&password=pass&userName=hsh&meetingID=123
进入浏览器,然后access.log将完成记录,所以这是一个安全问题,因为它记录了安全参数:
cmd=admin&password=pass&userName=hsh&meetingID=123
现在,我想控制我的日志打印,如果我执行一个不包含安全参数的 url,例如http://localhost/meeting/op.do,access.log 必须记录它,但是如果我输入一个包含安全性的 url参数如:
http://localhost/meeting/import.php?cmd=admin&password=pass&userName=hsh&meetingID=123
那么access.log不应该记录它,我应该去实现什么?
我尝试了一种方法,该方法可以设置有关SetEnvIf和CustomLog的日志变量,但它不起作用:
SetEnvIf Request_URI "(https?://.+\\?([^=]+=[^=]+)+)" dontlog
CustomLog logs/access.log common env=!dontlog
因为我的app请求类型是get,所以Request_URI无法获取参数,如果你执行一个URL:
http://localhost/meeting/import.php?cmd=admin&password=pass
Request_URI 是http://localhost/meeting/import.php,所以这个方法不能成功。
您有什么有用的方法或建议吗?如果您解决此问题,我将不胜感激,谢谢。提醒一下,我的开发环境是W7,不是linux,不支持shell。
** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ****
----问题变了!!!----
现在,我不仅要控制我的日志打印,而且如果我执行一个不包含安全参数的 url,它也会将参数替换为 *symbol,例如:
http://localhost/meeting/op.do,
access.log 必须记录它,但是如果我输入一个包含安全参数的 url,例如
http://localhost/meeting/import.php?cmd=admin&password=pass&userName=hsh&meetingID=123,
那么正则表达式替换必须起作用,它会解决:
http://localhost/meeting/import.php?cmd=****&password=****&userName=****&meetingID=****,
进入日志,我应该去实现什么?提醒:我的开发环境是W7。谢谢!