当前位置: 首页 > news >正文

访问控制2php相关配置

一、访问控制之限定某个目录禁止解析php

1、作用:对某些需要上传文件的目录进行限制解析PHP,防止他人上传php代码写的木马程序获取服务器权限。

2、编辑虚拟主机内容,在原来的基础上增加如下内容:

<Directory /data/testphp/111.com/upload>
php_admin_flag engine off
# <FilesMatch (.*)\.php(.*)>
# Order allow,deny
# Deny from all
# </FilesMatch>
</Directory>

#注释掉的代码如果加上直接是403,不加的话会显示php源代码。

3、创建相对应的目录与文件

mkdir -p /data/testphp/111.com/upload
[root@wangbing ~]# vim /data/testphp/111.com/upload/test.php

4、测试

1)当注释掉FilesMatch段时,显示源代码

2)当打开FilesMatch段时,显示403

 二、限制user_agent

1、user_agent :浏览器表识

2、编辑虚拟主机配置文件:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} .*curl.* [NC,OR]
RewriteCond &{HTTP_USER_AGENT} .*baidu.com.* [NC]
RewriteRule .* - [F]
</IfModule>

NC 表示不区分大小写,OR表识或者, F表识 Forbidden.

3、测试

1)此时我们发下无法访问,就是因为user_agent 匹配到了curl

2)指定 user_agent 访问 curl -A "fgsdgfjsbf" -x127.0.0.1:80 'http://111.com/123.php' -I

-A可以指定user_agent

当指定user_agent 没有匹配到A时可以访问。

三、php相关配置

1、查看php配置文件

命令:/usr/local/php/bin/php -i |grep -i "loaded configuration file";有时候找到的路径可能不准。

2、用web查找,在访问站点下创建phpinfo,在web下查看php配置文件径。

3、编辑配置文件/usr/local/php/etc/php.ini

1)定义date.timezone,如下图没有定义date.timezone,会有如下警告,定义后没有了。

date.timezone = Asia/Shanghai 

2)编辑 disable_functions 函数

disable_functions = eval,assert,popen,passthru,escapeshellarg,escapeshellcmd,passthru,exec,system,chroot,scandi
r,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

3)当把phpinfo禁掉后,效果如下:

4)、定义display_errors 

将 display_errors = On 修改为 display_errors = Off

display_errors = On 会把错误日志显示在浏览器里,会暴露网站的一些信息,

而改为Off后,在浏览器中什么都不会显示了,是空白的。

同样用curl访问,也没有信息输出。

5)定义错误日志:

a、设置 log_errors=on   设置为on,可以让php记录错误日志,设置为off,不记录日志

b、设置 error_log=/var/log/php_errors.log    设置日志路径

c、error_reporting =E_ALL & ~E_NOTICE     E_ALL为所有类型日志,记录所有类型的日志信息, &表示并且, ~表示排除,即排除notice信息。

6)测试

此时可以发现错误信息都保存到定义的日志当中了。

 四、配置open_basedir

1、作用:将网站限定在指定目录里。

2、在php.ini中设置open_basedir

open_basedir =tmp:/data/testphp/1111.com

3、测试

当设定目录是1111.com时,可以发现访问时都是500,查看日志/var/log/php_errors,报错为111.com/iindex.php没有被允许。

4、将目录改为111.com,发现可以访问了。

5、修改php.ini是对所有站点一起限定目录,而网站有多个站点,修改php.ini起不到隔离站点的作用。那么可以在/usr/local/apache2/conf/extra/httpd-vhosts.conf定义

6、编辑虚拟主机文件,增加下面内容

<VirtualHost *:80>
DocumentRoot "/data/testphp/aaa.com"
ServerName aaa.com
ServerAlias www.aaa.com www.123.com
php_admin_value open_basedir "/data/testphp/abcd.com:/tmp/"
ErrorLog "logs/aaa.com-error_log"
CustomLog "logs/aaa.com-access_log" common

</VirtualHost>

7、测试

 

转载于:https://www.cnblogs.com/wbjy123linux/p/8522684.html

相关文章:

  • java web添加mysql过程中遇到的错误及解决办法
  • 软件架构师 如何工作
  • 常见前端知识摘要
  • 3 - 9 字典里的各种;;;;;集
  • git学习--远程分支删除
  • Hibernate【与Spring整合】
  • Jenkins之发送html附件邮件配置
  • 零散Linux命令
  • 原则类
  • delphi 中如何访问另一个类中到私有方法?(转载)
  • 1-如何自己在eclipse上配置Andriod环境
  • 十大经典排序算法
  • 【BZOJ 4449】[Neerc2015]Distance on Triangulation 多边形分治结构
  • 前端第三篇---前端基础之JavaScript
  • 线段树 Segment Tree
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • Elasticsearch 参考指南(升级前重新索引)
  • isset在php5.6-和php7.0+的一些差异
  • Js基础知识(一) - 变量
  • js如何打印object对象
  • Making An Indicator With Pure CSS
  • Otto开发初探——微服务依赖管理新利器
  • PhantomJS 安装
  • Puppeteer:浏览器控制器
  • Python socket服务器端、客户端传送信息
  • React的组件模式
  • vue脚手架vue-cli
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 从0到1:PostCSS 插件开发最佳实践
  • 计算机常识 - 收藏集 - 掘金
  • 前端自动化解决方案
  • 小程序01:wepy框架整合iview webapp UI
  • 一个JAVA程序员成长之路分享
  • 自制字幕遮挡器
  • Linux权限管理(week1_day5)--技术流ken
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • ​卜东波研究员:高观点下的少儿计算思维
  • ​人工智能书单(数学基础篇)
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • ()、[]、{}、(())、[[]]命令替换
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (LeetCode) T14. Longest Common Prefix
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (三十五)大数据实战——Superset可视化平台搭建
  • (十)T检验-第一部分
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转载)深入super,看Python如何解决钻石继承难题