day 45 Apache访问控制2

11.28 限定某个目录禁止解析php

  • 虚拟主机配置文件配置内容如下:
    <Directory /data/wwwroot/www.123.com/upload>
        php_admin_flag engine off #把upload子目录下所有的php禁止解析
    </Directory>
  • curl -x127.0.0.1:80 /www.123.com/upload/test.php                                     #curl测试时直接返回了php源代码,并未解析php
  • 不仅禁止解析php,还要禁止访问php文件,避免返回php源代码
<Directory /data/wwwroot/www.123.com/upload>
        php_admin_flag engine off
<FilesMatch  "(.*)\.php(.*)">
        Order allow,deny
        Deny from all #禁止访问php
         </FilesMatch>
    </Directory>
11.29 限制user_agent

  • user_agent可以理解为浏览器标识,被恶意控制的大量的并发访问通常具有相同的“USER_AGENT”,通过限制该user_agent可以解决
  • 虚拟主机配置文件配置内容如下:
   <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteCond %{HTTP_USER_AGENT}  .*curl.* [NC,OR] #“NC”表示忽略大小写,“OR”表示“或”的关系,user_agent匹配“.*curl.*”,或者匹配下一行的“.*baidu.com.*”
        RewriteCond %{HTTP_USER_AGENT}  .*baidu.com.* [NC]
        RewriteRule  .*  -  [F] #“F”表示Forbidden
    </IfModule>
  • curl -x127.0.0.1:80 /www.123.com/test.php -I                     #curl命令测试,状态码为403(Forbidden),因为user_agent为“curl”(通过日志查看到),匹配了
  • curl -A "test aacd" -x127.0.0.1:80 /www.123.com/test.php -I #选项“-A”表示指定user_agent为 "test aacd" ,测试的状态码为200,能访问到,因user_agent不再匹配
11.30~11.31 PHP相关配置

  • /usr/local/php/bin/php -i |grep -i "loaded configuration file" #查看php配置文件位置
  • cp /usr/local/src/php-7.1.6/php.ini-development /usr/local/php7/etc/php-ini #拷贝php配置文件,重加载后浏览器测试,访问index.php,可看到php加载的配置文件
  • date.timezone, 在php配置文件里定义时区,通常定义为:Asia/Shanghai
  • disable_functions, 禁掉一些函数的功能, 编辑php配置文件,添加disable_functions的参数,通常可以设置如下有风险的函数,可以加上“phpinfo”禁止访问php相关信息
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
  • log_errors, php的配置文件里设置为“on”,开启错误日志记录
  • error_log, 定义错误日志的放置路径,比如:error_log=/tmp/php_errors.log
  • display_errors, 设置是否显示错误日志,将配置文件里的“display_errors”设置为“off”,若“phpinfo”禁止访问,则访问时不会显示错误信息(包含路径)
  • error_reporting,设置告警级别,如果设置为“E_ALL”则包含所有级别的告警,通常设置为“E_ALL & ~E_NOTICE”,除了“NOTICE”的其它各种告警
  • open_basedir ,php配置文件里设置,开放(不限制)指定的目录
  • php_admin_value open_basedir "/data/wwwroot/111.com:/tmp/" #在虚拟主机配置文件里进行配置,可对不同的虚拟主机进行配置,默认的临时文件在“/tmp”子目录下,若将该子目录进行限制,那么临时文件写入不了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值