PHP 伪协议
PHP 伪协议的出现是为了提供一个 统一的、简洁的 接口来处理 不同的数据流。这些伪协议可以被看作是一种 桥梁,它们允许开发者 使用常规的文件操作函数来处理各种不同的数据流。
php://filter的格式
php://filter/read=?/resource=?
里面词语概念:
resource 在 php://filter 中,resource 参数是必须的。resource 用于指定 需要进行筛选过滤的数据流。
read read 参数指定 一个或多个过滤器 用于 读 操作,多个过滤器之间以管道符 | 进行分隔。
write write 参数指定 一个或多个过滤器 用于 写 操作,多个过滤器之间以管道符 | 进行分隔。
省略read 和write 也可以进行普通的读写操作
在使用这个写入内容的时候要注意配合fopen()和file_put_contents()这些函数来使用,这些函数支付文件的写入(include不支持文件写入:因为 include 和 require 等函数的设计目的是直接包含和执行指定路径的文件内容,而不是处理或修改这些内容。)
include 和require也可以处理PHP伪协议的字符串 但是 仅php://filter进行读取操作
没有使用指定过滤器,PHP会出现Warning的异常
使用指定过滤器的时候加上管道符 | 就可以进行多个过滤器(从左向右)依次处理
但是在 管道符前后加 空格则会导致部分过滤器没有办法使用
在尝试使用 file_get_contents 函数获取 远程文件 中的内容时,请确保 PHP 已经开启了 allow_url_fopen 配置项,否则 PHP 将抛出 Warning 异常(这个项目默认是开启的)
allow_url_include 是 PHP 的一个配置指令,与 allow_url_fopen 类似
但 allow_url_include 配置专门针对 PHP 的 include、include_once、 require 及 require_once 语句。
当 allow_url_include 被设置为 On 时,PHP 允许通过 URL 的形式,从远程服务器 包含和执行 PHP 文件。(这个项目默认是关闭的)
rot13加解密
rot13算法:其基本思想是将字母表中的每一个字母移动 13 个位置。因为拉丁字母表有 26 个字母,所以 ROT13 解密 是其自身的 逆运算:即对一个已经 ROT13 加密的文本再次进行 ROT13 加密,将获得加密文本的原始文本。
使用string.rot13过滤器 就可以实现rot13的处理
如:php://filter/writer=string.rot13
如果是远程处理文件 就需要关注allow_url_fopen或allow_url_include的配置项 这2个配置决定着这些函数是否能成功访问或执行 远程服务器的数据
对于allow_url_fopen
fopen() 和 file_get_contents() 。具体来说,当 allow_url_fopen 被设置为 On(开启)时,这些函数可以用来 读取 或 写入远程文件。而当该配置项被设置为 Off(关闭)时,这些函数 只能用于操作本地文件。

浙公网安备 33010602011771号