详解PHP防止直接访问.php 文件的实现方法
详解PHP防止直接访问.php 文件的实现方法
为了保证我们用 PHP 写的 API 的安全性要禁止除了接口外的访问方式.
比如我们的项目为 example, 其下有文件夹 dir1、有个接口文件 api.php. 结构为: 输入图片说明
这时候我们要求只能通过 example/api.php 来调用file.php里的服务,不能直接通过example/dir1/file.php来访问.
在 php 里有这样一个变量$_SERVER,这是个数组变量, 里面有各种键值对, 具体的可以搜索一下资料. 那么我们现在可以通过$_SERVER里的SCRIPT_NAME来获取脚本名称. $_SERVER['SCRIPT_NAME'],其值会是类似 xxx/api.php,那么我们就可以通过判断访问链接里是否含有api.php来判断这个访问是否为合法的访问, 如果合法则继续执行, 不合法则阻断.
具体代码如下:
if(strpos($_SERVER['SCRIPT_NAME'], 'api.php') === false){ echo "error"; exit; }
在 file.php里的开头添加上以上代码即可.
以上就是PHP防止直接访问.php 文件的实现方法,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
相关推荐
-
PHP中防止直接访问或查看或下载config.php文件的方法
或是,PHP的设计本身就避免直接查看文件内容的情况? 从安全角度考虑,这个系统级的文件应该做什么保护措施? 网友完善的答案 经调研,得出以下常用方法: 1 在程序中定义一个标识变量 复制代码 代码如下: define('IN_SYS', TRUE); 2 在config.php中获取这变量 复制代码 代码如下: if(!defined('IN_SYS')) { exit('禁止访问'); }
-
Apache下禁止php文件被直接访问的解决方案
一开始,我想在重写规则里直接禁止php后缀的URL被访问.但后来发现重写规则是递归调用的,如果在重写规则里直接禁止php,那么重写到php文件的规则也会失效.RewriteEngineOn 复制代码 代码如下: RewriteRule^test$/test.php[L] RewriteRule^test.php$$0[F,L] 递归调用这真可怕,一开始访问/test的时候URL重写检查一次,然后匹配到^test$就内部重定向到/test.php,然而内部重定向也会触发URL重写,因此再次检查,匹
-
详解PHP防止直接访问.php 文件的实现方法
详解PHP防止直接访问.php 文件的实现方法 为了保证我们用 PHP 写的 API 的安全性要禁止除了接口外的访问方式. 比如我们的项目为 example, 其下有文件夹 dir1.有个接口文件 api.php. 结构为: 输入图片说明 这时候我们要求只能通过 example/api.php 来调用file.php里的服务,不能直接通过example/dir1/file.php来访问. 在 php 里有这样一个变量$_SERVER,这是个数组变量, 里面有各种键值对, 具体的可以搜索一下资料.
-
详解在.net中读写config文件的各种方法
今天谈谈在.net中读写config文件的各种方法. 在这篇博客中,我将介绍各种配置文件的读写操作. 由于内容较为直观,因此没有过多的空道理,只有实实在在的演示代码, 目的只为了再现实战开发中的各种场景.希望大家能喜欢. 通常,我们在.NET开发过程中,会接触二种类型的配置文件:config文件,xml文件. 今天的博客示例也将介绍这二大类的配置文件的各类操作. 在config文件中,我将主要演示如何创建自己的自定义的配置节点,而不是介绍如何使用appSetting . 请明:本文所说的conf
-
详解SQL Server数据库状态和文件状态
数据库状态 (database states) 查询数据库的当前状态 : 1.查询所有数据库的状态 ,通过sys.databases目录视图的state_desc列 user master go select state_desc ,[name] from sys.databases go 2.查询指定数据库的状态,通过DATABASEPROPERTYEX函数的Status属性 select DATABASEPROPERTYEX('demoData','status') go 状态: ONLIN
-
详解node服务器中打开html文件的两种方法
本文介绍了详解node服务器中打开html文件的两种方法,分享给大家,具体如下: 方法1:利用 Express 托管静态文件,详情查看这里 方法2:使用fs模块提供的readFile方法打开文件,让其以text/html的形式输出. 代码: var express = require('express'); var fs=require("fs"); var app = express(); //方法1:通过express.static访问静态文件,这里访问的是ajax.html //
-
详解PHP使用OSS上传文件
目录 一.安装阿里云 oss sdk 二.使用 1.获取 OSS AccessKeyId.AccessKeySecret 2.简易上传 Html 处理 3.控制器处理 OssImageController.php 4.service层处理 OssImageService.php 5.oss 实例及参数获取封装 AliOss.php 6.结果是可以上传成功 三.问题说明 一.安装阿里云 oss sdk 在网站根目录执行下面命令,安装oss sdk. composer require aliyun
-
详解Docker在哪里保存日志文件
目录 日志存储在哪里? 从容器内的应用程序查看日志 查看 Docker 守护进程日志 调试大多数 Linux 程序通常涉及检查日志文件,这可能是一个复杂的过程.但是,在 Docker 下的容器化环境中运行时,您需要使用更具体的工具来调试生产中的应用程序. 日志存储在哪里? 简单的答案是 Docker 将容器日志存储在其主要存储位置/var/lib/docker/. 每个容器都有一个特定于其 ID 的日志(完整 ID,而不是通常显示的缩短的 ID),您可以像这样访问它: /var/lib/dock
-
详解Struts2中Action访问Servlet API的几种方法
详解Struts2中Action访问Servlet API的几种方法 在通常的web开发中Request和Response对象比较常见,但在Struts2框架中由于Action能与JSP页面进行数据交互,所以通常都不会用到这两个对象.如果想在Struts2程序中用到这两个对象,也有解决方法 Struts2的Action并未直接与任何Servlet API耦合,这是Struts2的一个改良之处,因为Action类不再与Servlet API耦合,能更轻松的测试该Action.但如何访问? Web应
-
详解配置 Apache 服务器支持 PHP 文件的解析
详解配置 Apache 服务器支持 PHP 文件的解析 [说明] 1. 本例中 Apache 版本为 httpd-2.4.20-x64-vc14 ,安装路径为 E:\Apache24 2. PHP 版本为 php-5.5.34-Win32-VC11-x64 ,安装路径为 E:\php-5.5.34 [下载] 登录 http://php.NET/downloads.php 下载 PHP,由于我要把它跟 Apache 集成,所以我这里下载的是 Thread Safe 版本: [安装] 1. 解压下载
-
详解C 语言项目中.h文件和.c文件的关系
详解C 语言项目中.h文件和.c文件的关系 在编译器只认识.c(.cpp))文件,而不知道.h是何物的年代,那时的人们写了很多的.c(.cpp)文件,渐渐地,人们发现在很多.c(.cpp)文件中的声明语句就是相同的,但他们却不得不一个字一个字地重复地将这些内容敲入每个.c(.cpp)文件.但更为恐怖的是,当其中一个声明有变更时,就需要检查所有的.c(.cpp)文件. 于是人们将重复的部分提取出来,放在一个新文件里,然后在需要的.c(.cpp)文件中敲入#include XXXX这样的语句.这样即
-
详解如何修改 node_modules 里的文件
前言 有时候使用npm上的包,发现有bug,我们知道如何修改,但是别人可能一时半会没法更新,或者是我们特殊需求,别人不愿意修改,这时候我们只能自己动手丰衣足食.那么我们应该如何修改别人的源码呢?首先,直接修改node_modules里面的文件是不太行的,重新安装依赖就没有了.一般常用办法有两个: 下载别人代码到本地,放在src目录,修改后手动引入. fork别人的代码到自己仓库,修改后,从自己仓库安装这个插件. 这两个办法的缺陷就是:更新麻烦,我们每次都需要手动去更新代码,无法与插件同步更新.如
随机推荐
- 使用mysqldump对MySQL的数据进行备份的操作教程
- Go语言中转换JSON数据简单例子
- 字符集和字符编码(Charset & Encoding)
- jquery 选择器引擎sizzle浅析
- JS正则RegExp.test()使用注意事项(不具有重复性)
- java文件输出流写文件的几种方法
- javascript面向对象快速入门实例
- asp.net session丢失的解决方法小结
- asp.net导出Excel乱码的原因及解决方法
- c#实现隐藏与显示任务栏的方法详解
- js实现checkbox全选和反选示例
- Android自定义View实现通讯录字母索引(仿微信通讯录)
- Java数据结构之散列表(动力节点Java学院整理)
- 用js绘图
- CMD命令行高级教程精选合编合集
- JavaScript对数组进行随机重排的方法
- Jquery增加鼠标中间功能mousewheel的实例代码
- 浅谈jquery选择器 :first与:first-child的区别
- 使用javascript插入样式
- 使用XDebug调试及单元测试覆盖率分析