6月1日任务

11.28 限定某个目录禁止解析php
11.29 限制user_agent
11.30/11.31 php相关配置
扩展
apache开启压缩 http://ask.apelearn.com/question/5528
apache2.2到2.4配置文件变更 http://ask.apelearn.com/question/7292
apache options参数 http://ask.apelearn.com/question/1051
apache禁止trace或track防止xss http://ask.apelearn.com/question/1045
apache 配置https 支持ssl http://ask.apelearn.com/question/1029

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

所谓禁止PHP解析,是为了防止被黑客攻击和上传一些恶意文件盗取资料,所以有必要设置指定的目录禁止解析PHP。

编辑虚拟主机配置文件vhosts.conf,添加以下内容。

重新加载配置文件,然后创建一个upload目录,并使用curl命令进行测试。

可以在配置文件中加上#注释掉不需要的内容,看看禁止解析PHP的效果。

可以把刚才配置文件中带注释的#删除掉,这样就可以做进一步的限制,在浏览器中连访问都不提供,直接显示forbidden。

可写的目录比如上传图片的目录,都是不需要解析PHP的,一般静态文件所存放的目录,是不允许放PHP的。

11.29 限制user_agent

user_agent可以理解为浏览器标识,编辑虚拟主机配置文件vhosts.conf,添加以下内容。

测试查看结果,所访问的地址直接提示403状态码forbidden。

也可以通过日志查看user_agent

如何判定就是因为做了限制user_agent,可以通过curl -A自定义指定user_agent,然后再测试就会显示200可以访问的状态码。

同样也可以通过日志查看到刚才自定义的user_agent为jimmy123 jimmy123

11.30/11.31 php相关配置

查看PHP配置文件路径,编辑PHP文件添加phpinfo,然后在浏览器页面就可以查看到php的配置文件路径。

浏览器输入http://111.com/index.php 就可以看到PHP相关的信息。 

如果配置文件没有加载,执行以下命令可以加载配置文件。

这个时候再刷新浏览器就可以看到配置文件已经加载 

找到php.ini文件后,我们可以做一些配置去限定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一起被禁用,在浏览器连phpinfo都无法访问查看。 

date.timezone 定义时区,如果不定义的话,有时候会有报错信息。

刚才能够在浏览器看到phpinfo信息被禁用,而且信息内容直接显示到浏览器,如果把display_errors = Off 浏览器就不会显示任何内容,而是完全空白页面。

没有任何的输出,因为是一个空白页。

如果display_errors = Off没有任何输出,我们无法看到有什么问题,所以需要设置一个错误日志方便查看。

已经在指定目录生成php_errors.log

可以在模拟一个错误

这个时候使用curl访问也同样是一个空白页,只不过报错状态码是500,也可以查看日志级别会比上一个级别高,这个级别是error,上一个是Warning。

open_basedir 的作用:例如有2个网站,A网站A目录和B网站B目录,如果被黑客攻击了,没有设置open_basedir的话,很容易被渗透到其他目录,一旦设置了open_basedir,就即便是A网站被黑了只最多只是A目录受到影响,而B网站是不会被影响到的,因为没有权限访问根本进不去,所以设置open_basedir进行限制也是非常有必要的,在配置文件vim /usr/local/php7/etc/php.ini 中设置。

curl访问会报错500,即便是把2.php修改成正确的语法内容,也一样会报500状态码,因为并没有给2.php做允许访问。

修改成正确的路径,就可以访问了。

如果服务器上跑了很多个站点,就只是限制在这个目录下,就没有意义了,在这个目录下的网站都可以来去自如,这样就不太合适了,应该针对这个站点去做open_basedir,那么在php.ini里面是做不到了,但是可以在虚拟主机配置文件vhosts.conf里去做,对不同的虚拟主机做不同的open_basedir,增加这样的语句就行了。 php_admin_value open_basedir "/data/wwwroot/abc.com:/tmp/"

最新文章

  1. javascript运动系列第四篇——抖动
  2. pasa的安装
  3. 关于jsp web项目中的javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/el/ELResolver错误
  4. Php函数完整参考手册
  5. 有关于二分搜索的常见问题(java实现)
  6. 关于npm安装报错 网络问题等等等
  7. 关于Android布局优化的代码使用
  8. EtherCAT主站对PHY有要求?
  9. websocket初识
  10. 设计模式のSingleton Pattern(单例模式)----创建模式
  11. hdu 4300 Clairewd’s message(扩展kmp)
  12. Javascript杂!
  13. python成长之路八 -- 内置函数
  14. 用C#.NET调用Java开发的WebService传递int,double问题,出现java无法获得值!
  15. Ajax的返回状态码(status)
  16. python中面向对象_类_对象的概念与定义
  17. orcale增量全量实时同步mysql可支持多库使用Kettle实现数据实时增量同步
  18. [PY3]——内置数据结构(9)——线性结构与切片/命名切片slice()
  19. Python静态代码检查工具Flake8
  20. [Maven实战-许晓斌]-[第二章]-2.1在Windows上安装maven

热门文章

  1. 前端技术之:如何创建一个NodeJs命令行交互项目
  2. Linux 如何创建或删除以横杠(-)开头的文件或目录
  3. 学习笔记16_页面缓存/进程外Session
  4. Python SQLAlchemy入门教程
  5. 随(rand):原根,循环矩阵,dp
  6. 基于华为物联网IOT的应用开发 ---界面管理开发
  7. Android 开源库 GitHub 托管
  8. js实现列表从下往上循环滚动
  9. 一文教您如何通过 Java 压缩文件,打包一个 tar.gz Filebeat 采集器包
  10. Python实现王者荣耀小助手(二)