PHP上传目录禁止执行php文件实例讲解

导读:

禁止上传目录运行php等可执行文件,可以从一定程度上增加网站的安全性。之前我二次开发过别人开源的一个Thinkphp项目,我更换过Thinkphp内核,也检查过有没有后门和木马,感觉挺安全的,但后面还是被彩票平台篡改了首页,我没有仔细推敲和研究别人是怎么做到的,而是直接删掉了整个项目,对于不安全的源代码,我都是直接舍弃不要。后来想了想,应该是被上传了后门文件,然后shell提权修改了首页文件。为了解决这种安全隐患问题,我服务器安装了防篡改系统,同时禁止在上传目录里执行php文件。

需要防范的PHP文件有三种类型:

第一种类型. 正常php文件                 a.php

第二种类型.  php扩展名有大小写     a.pHp     a.PHP  a.Php

第三种类型.  双重扩展名文件           a.php.a    a.php.xml

说明:通常只考虑防范第一种,渗透攻击常使用第二种和第三种。

第①种方法(推荐):

1、新建一个.htaccess文件,代码内容如下:

<Files ~ ".php">
Order allow,deny
Deny from all
</Files>

或者用下面的代码: 

<FilesMatch "\.(?i:php|php3|php4|php5)">
Order allow,deny
Deny from all
</FilesMatch>

2、上传.htaccess文件到要禁止运行php的文件夹内,如下图:

 第②种方法:

修改apache的配置文件httpd.conf,代码如下:

<Directory D:\wwwroot\public\uploads>
<Files ~ ".php">
Order allow,deny
Deny from all
</Files>
</Directory>

或者用下面的代码: 

<Directory D:\wwwroot\public\uploads>
<FilesMatch "\.(?i:php|php3|php4|php5)">
  Order allow,deny
  Deny from all
</FilesMatch>
</Directory>

第③种方法:

在网站根目录新建一个.htaccess文件,代码如下:

RewriteEngine on RewriteCond % !^$
RewriteRule uploads/(.*).(php)$ – [F]
RewriteRule data/(.*).(php)$ – [F]
RewriteRule templets/(.*).(php)$ –[F]

上述代码是直接指定哪个目录文件夹下,禁止执行php文件。

到此这篇关于PHP上传目录禁止执行php文件实例讲解的文章就介绍到这了,更多相关PHP上传目录禁止执行php文件内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • ThinkPHP菜单无极分类实例讲解

    效果图如下 controller控制器代码:  /** * 菜单列表 */ public function index(){ $menuList= Db::name('menu')->order('sort,id')->select(); //递归排序 $menuList= $this->sort($menuList); $this->assign('menuList',$menuList); return view(); } protected function sort($da

  • PHP生成缩略图实例讲解

    封装的方法函数: <?php /** * 生成缩略图 * $imgSrc 图片源路径 * $thumbWidth 缩略图宽度 * $thumbHeight 缩略图高度 * $thumbSrc 缩略图路径 * $isCut 是否剪切图片 */ function createThumbImg($imgSrc, $thumbWidth, $thumbHeight, $thumbSrc, $isCut = false) { //1.获取图片的类型 $type = substr(strrchr($imgS

  • Thinkphp自定义美化success和error提示跳转页面代码实例

    先贴效果图: 优点:图标是有动画效果的,不需要背景图片.  1.需要引用一个dialog.css,代码如下:  /* =========================================== @des: dialog.less @author: 美奇软件开发工作室 @QQ: 15577969 @赞助平台: 元宝支付(18pay.net) @time: 2021-01-10 =============================================*/ @charse

  • PHP随机生成18位不重复的订单号代码实例

    PHP代码:  /** * 生成18位订单号 * $length:随机数长度 */ function generateOrderNumber($length=4){ //14位的日期(年月日时分秒) $date=trim(date('Ymdhis ',time())); //初始化变量为0 $connt = 0; //建一个新数组 $temp = array(); while($connt < $length){ //在一定范围内随机生成一个数放入数组中 $temp[] = mt_rand(0,

  • PHP上传目录禁止执行php文件实例讲解

    导读: 禁止上传目录运行php等可执行文件,可以从一定程度上增加网站的安全性.之前我二次开发过别人开源的一个Thinkphp项目,我更换过Thinkphp内核,也检查过有没有后门和木马,感觉挺安全的,但后面还是被彩票平台篡改了首页,我没有仔细推敲和研究别人是怎么做到的,而是直接删掉了整个项目,对于不安全的源代码,我都是直接舍弃不要.后来想了想,应该是被上传了后门文件,然后shell提权修改了首页文件.为了解决这种安全隐患问题,我服务器安装了防篡改系统,同时禁止在上传目录里执行php文件. 需要防

  • apache,nginx上传目录无执行权限的设置方法

    我们来看俩段通常对上传目录设置无权限的列子,配置如下: 复制代码 代码如下: <Directory "/var/www/upload"> <FilesMatch ".php"> Order Allow,Deny Deny from all </FilesMatch> </Directory> 还有网上那个对nginx上传目录无执行权限 复制代码 代码如下: location ~ ^/upload/.*\.(php|ph

  • html5以及jQuery实现本地图片上传前的预览代码实例讲解

    html5以及jQuery实现本地图片上传前的预览,效果类似如下: 选择图片前的页面: 选择图片之后的预览效果: 下面直接上代码(只是最简单的实现代码,css样式没有复制,自己随意发挥) <!DOCTYPE html> <html> <head> <title>HTML5上传图片预览</title> <meta http-equiv="Content-Type" content="text/html; char

  • jQuery插件ImgAreaSelect实现头像上传预览和裁剪功能实例讲解一

    上一节随笔中,我们已经知道了关于jQuery插件ImgAreaSelect基本的知识:那么现在看一下实例: 首先,要知道我们应该实现什么功能? (1)图片能够实现上传预览功能 (2)拖拽裁剪图片,使其能够显示裁剪后的区域 (3)显示要裁剪区域的坐标 其次,该如何引用该插件呢? 那就具体看一下吧! 第一步:先将样式和文件包引入(根据你自己的位置引入) <!--引入imgareaselect的css样式--> <link rel="stylesheet" type=&qu

  • nginx设置上传目录无执行权限的方法

    nginx上也很简单,我们使用location..如下: 复制代码 代码如下: location ~ ^/upload/.*\.(php|php5)$ { deny all; } 其中upload换为你要设置的目录名字 这条规则的含义是匹配请求连接中开头是/upload/,中间匹配任意字符,结尾匹配.php或者.php5的页面,最后利用deny all禁止访问,这样就防止了上传目录的脚本执行权限

  • php下连接ftp实现文件的上传、下载、删除文件实例代码

    php ftp传送文件到服务器 复制代码 代码如下: <?php // 开始 $ret = ftp_nb_get ($my_connection, "test", "README", FTP_BINARY, filesize("test")); // 或: $ret = ftp_nb_get ($my_connection, "test", "README", // FTP_BINARY, FTP_A

  • 详解Visual Studio使用Git忽略不想上传到远程仓库的文件

    前言: 作为一个.NET开发者而已,有着宇宙最强IDE:Visual Studio加持,让我们的开发效率得到了更好的提升.我们不需要担心环境变量的配置和其他代码管理工具,因为VS有丰富的拓展工具.废话不多说,直接进入正题.我们日常在使用VS开发相关的.NET项目时,经常会发现刚拉取下拉的代码什么都没有改动,就是运行了一下就会产生一些需要提交的文件,比如说最常见的bin/Debug, bin/Release,obj/Debug,obj/Release文件.但是我不想把这些文件提交到远程的git代码

  • jsp-解决文件上传后重启Tomcat时文件自动删除问题

    吼吼,我遇到的问题是这样的...... 我写了一个图片上传的方法,上传时,判断没有这个目录就自动建立一个.然后开始上传图片,能成功,能在服务器找到文件夹和相应的文件.但是,重启项目,或者清理缓存之后,图片和文件夹就会自动被删除,不见了. 先说解决办法吧,后面再分析: 1.把/tomcat/webapps/目录清空,删掉该文件夹的所有内容, 2.修改/tomcat/conf/web.xml文件: <servlet> <servlet-name>default</servlet-

  • 批处理向FTP上传具有指定属性的文件(增量备份)

    怎样实现对一个目录里的几个文件自动上传FTP时只上传有归档属性的文件,然后FTP上传成功后自动清除(本机)刚上传文件的归档属性,批处理可以实现到吗?有点类似于对文件增量备份的功能吧 @echo off rem 指定FTP用户名 set ftpUser=FTPUSERNAME rem 指定FTP密码 set ftpPass=FTPPASSWORD rem 指定FTP服务器地址 set ftpIP=192.168.0.2 设置待上传的本地文件夹目录 set SrcFolder=C:/test dir

  • JAVA SFTP文件上传、下载及批量下载实例

    1.jsch官方API查看地址(附件为需要的jar) http://www.jcraft.com/jsch/ 2.jsch简介 JSch(Java Secure Channel)是一个SSH2的纯Java实现.它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成它的功能到你自己的应用程序. SFTP(Secure File Transfer Protocol)安全文件传送协议.可以为传输文件提供一种安全的加密方法.SFTP 为 SSH的一部份,是一种传输

随机推荐