11.28 限定某个目录禁止解析php
11.29 限制user_agent
11.30/11.31 PHP相关配置
限定某个目录禁止解析php
如果我们 有一个目录允许上传呢图片,php有一些危险的函数,如果开放了上传的权限,被上传一些恶意的木马上去,形成网站入侵。
核心配置文件内容,一般静态文件存放的目录下是不允许放php的。
<Directory /data/wwwroot/www.123.com/upload>
php_admin_flag engine off
</Directory>
curl测试时直接返回了php源代码,并未解析
限制user_agent
user_agent可以理解为浏览器标识
核心配置文件内容
<IfModule mod_rewrite.c>
RewriteEngine on //之前我们用Rewrite模块是做域名跳转,此处用来限制USER_AGENT.
RewriteCond %{HTTP_USER_AGENT} .*curl.* [NC,OR] // %{HTTP_USER_AGENT} .*curl.*表示条件,NC是、表示忽略大小写,OR是或者的意思。 RewriteCond %{HTTP_USER_AGENT} .*baidu.com.* [NC]
RewriteRule .* - [F] //F表示forbidden
</IfModule>
curl -A "123123" 指定user_agent
PHP相关配置
1. 用phpinfo()查找配置文件的位置很准确,如查找www.123.com这个目录的配置文件位置,步骤如下:
# cd /data/wwwroot/www.123.com
# 编辑目录下的一个文件,如 vim index.html
# cd /usr/local/src/php-7.1.6
#cp php.ini-development /usr/local/php7/etc/php.ini
然后刷新apache配置文件 graceful ,浏览器测试,查看phpinfo,此时就能查看到php的配置文件。
2. 使用php -i 查看php配置文件的位置
/usr/local/php/bin/php -i|grep -i "loaded configuration file" //有一些情况用php -i是不准的,因为apache调用的是php这个程序,跟配置文件没有太直接的关系。
vim /usr/local/php/etc/php.ini ,修改一下disable_functions和date.timezone
disable_functions=eval,assert,popen,passthru,escapeshellarg,escapeshellcmd,passthru,exec,system,chroot,scandir,chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,leak,popepassthru,stream_socket_server,popen,proc_open,proc_close,phpinfo
修改时间为所需时间 date.timezone=Asia/Shanghai
日志相关的配置
display_errors = Off 设置成On会把相关的一些错误信息显示在浏览器上,还会暴露我们的相关目录,设置成Off浏览器错误会变成白页,所以我们还要配置一些错误日志。
配置错误日志
error_log =/tmp/php_errors.log //把错误日志放到一个目录下,此时我们放到/tmp/目录下。
设置错误日志的级别:定义 error_reporting,如下图所示。
php安全相关的配置
open_basedir //安全参数,设置该参数的目的:比如A网站被黑了,不会牵连到我的B网站。但是会限制该目录下的所有网站,因此需要在虚拟主机配置文件里面执行以下配置 :
php_admin_value open_basedir "/data/wwwroot/111.com:/tmp/" //此处是在虚拟主机配置文件里面操作,针对不同的虚拟主机限制不同的open_basedir,之所以要带上/tmp/是因为默认的临时文件是在/tmp/下。