PHP伪协议php://filter的使用

First Post:

Last Update:

Word Count:
463

Read Time:
1 min

php://filter

PHP伪协议以php://filter/开头,后方参数以/分割,主要有以下三种参数

  • resource
    • 必选参数,用于标识需要应用过滤器的数据源
  • read
    • 可选参数, 后接需要对数据源应用的过滤器列表,过滤器直接使用|分割
  • write
    • 可选参数, 与read相同

数据将从resources数据源中取出,经过read/write过滤器从前向后处理后输出

1
php://filter/read=convert.base64-encode/resource=filter.txt

以上过滤器会将filter.txt中的数据通过convert.base64-encodeBase64编码后输出

1
php://filter/read=convert.base64-encode|string.toupper/resource=filter.txt

以上过滤器会将filter.txt中的数据通过编码后转换为大写输出

注意
将Base64编码全部转换为大写会导致无法解码,此处仅做多个过滤器示例使用

过滤器列表

字符串过滤器

string.rot13

ROT13是一种简易的替换式密码,应用ROT13密码只需要将每一个字母替换为26位字母表中向后13位的字母
如字母A将被替换为NB替换为O
由于英文字母只有26个,因此对应用过ROT13的文本再次应用即可还原为原始文本

string.toupper

将字母转换为大写

string.tolower

将字母转换为小写

string.strip_tags

PHP7.3.0开始,此方法已经被废弃

去除文本中的标记,如html标记<b> <div>等,PHP标记<?php?>

转换过滤器

convert.base64-encode(decode)

base64-encode用于Base64编码,base64-decode用于解码,无需赘述

convert.iconv.*

等效于PHPiconv函数,格式通常为convert.iconv.<from>.<to>,用于将一种编码的文本转换为另一种编码

压缩过滤器

zlib.deflate(inflate)

zlib压缩(deflate)和解压(inflate)

bzip2.compress(decompress)

bzip2压缩(compress)和解压(decompress)