zoukankan      html  css  js  c++  java
  • 8.7

    1、限定某个目录禁止解析PHP

      核心配置文件

      <Directory /data/wwwroot/www.123.com/upload>

        php_admin_flag engin off    //禁止解析php

        <filesmatch *.php(.*)>     //避免直接访问到源代码

        Order allow,deny

        Deny from all

        </filesmatch>

      </Directory>

      如果不禁止访问源码,则在禁止解析php后,进行访问时,会直接显示源代码

      禁止访问源码后,再进行访问时,则不会显示源码

     2、限制user_agent

      user_agent可以理解为浏览器标识

      为了防御CC攻击,CC攻击的特点是所有数据包的user_agent是一致的

      核心配置文件

      <IfModule mod_rewrite.c>

        RewriteEngine on 

        RewriteCond %{HTTP_USER_ANENT} .*curl.*[NC,OR]       //与下一句是或的关系,如果不加OR,就为与的关系,NC是忽略大小写

        RewriteCond %{HTTP_USER_ANENT} .*baidu.com.*[NC]      //与上一句是或的关系

        RewriteRule .* -[F]                      //参数F是指forbidden

      </IfModule>

      此时使用curl进行访问时,会显示为403

      而模拟user_agent进行访问时,则可以正常访问

      查看访问日志,可以看出此请求的user_agent是被指定的

      使用curl -A可以指定user_agent

      使用curl -e “http://    可以指定referer

      使用curl -x,省略hosts

      使用-I选项,只查看状态码

    3、PHP相关配置

      查看php配置文件位置

      /usr/local/php/bin/php -i |grep -i "loaded configuration file"    此种方法有时不够准确

      使用phpinfo是最准确:在站点目录下,创建phpinfo页面,通过浏览器查看配置文件在哪,然后再进行修改

      1.在站点目录下创建phpinfo页面

      2.访问phpinfo页面,查找配置页面位置,由下图可以看出配置文件位置为/usr/local/php7/etc,但并未调用配置文件

      3.复制配置文件模版到/usr/local/php7/etc目录下

      cp /usr/local/src/php-7.1.6/php.ini-development /usr/local/php7/etc/php.ini

      4.重新加载配置/usr/local/apache2.4/conf/apachectl graceful,然后刷新浏览器页面,可以看到页面的配置文件

       5.打开配置文件,修改配置文件,可以对以下参数进行配置

      disable_function        安全参数,可以禁止某些不安全的函数

      可以在disable_function中禁止以上不安全函数

      定义data.timezone    定义时区,可以定义到重庆或上海

     

      定义日志相关参数。

      默认情况下,会将错误信息打印在浏览器上, 这样会造成系统安全性降低

      可以通过修改参数display_error = Off来解决,重新加载配置文件后,再进行访问时,就无法在浏览器页面查看到错误信息

      使用curl进行访问时,没有任何输出

      如果需要查看错误信息,可以通过配置错误日志来解决。

      log_error = On    //打开错误日志记录开关

      error_log = /tmp/php_errors.log    //定义错误日志路径

      error_ reporting =  E_NOTICE          //E_ALL表示记录所有的错误日志,生产环境中建议使用E-NOTICE

       然后就可以查看到/tmp目录下生产了日志文件,且日志文件的属主和属组都是daemon

      通过查看httpd的信息,可以发现daemon是httpd的属主,标明错误日志是以该进程的属主来进行的,因此如果以后发现无法生成日志文件,可以查看该进程是否有写权限

      open_basedir      //隔离站点的目录,用来防止由于某个站点出现问题而连累其他站点,增加该选项后,用户只能在该目录下操作

      open_basedir = /data/wwwroot/111.com:/tmp/

       当服务器上一个目录下存在多个站点时,该参数无法起到作用。可以在虚拟主机配置文件中进行修改,增加如下配置

      php_admin_value open_basedir "/data/wwwroot/111.com:/tmp/",可以在每个配置文件中的虚拟主机配置进行配置,以此来解决一个目录下存在多个站点

  • 相关阅读:
    Linux之定时器与时间管理 【转】
    LDAP研究
    Mac中使用svn进行项目管理
    英国调查报告称中国梦吸引力首超美国梦
    怎样删除在Github中创建的项目
    MySQL分组数据
    Eclipse ADT 插件安装慢的解决的方法
    iOS插件化研究之中的一个——JavaScriptCore
    二维码的妙用:通过Zxing实现wifi账号password分享功能
    CF(435D
  • 原文地址:https://www.cnblogs.com/w494129131/p/9427142.html
Copyright © 2011-2022 走看看