国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

PHP偽協(xié)議filter詳解,php://filter協(xié)議過濾器

這篇具有很好參考價值的文章主要介紹了PHP偽協(xié)議filter詳解,php://filter協(xié)議過濾器。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

「作者主頁」:士別三日wyx
「作者簡介」:CSDN top100、阿里云博客專家、華為云享專家、網(wǎng)絡(luò)安全領(lǐng)域優(yōu)質(zhì)創(chuàng)作者
「推薦專欄」:對網(wǎng)絡(luò)安全感興趣的小伙伴可以關(guān)注專欄《網(wǎng)絡(luò)安全入門到精通》

PHP偽協(xié)議filter詳解,php://filter協(xié)議過濾器


php:// 用來訪問輸入和輸出流(I/O streams)。

輸入/輸出流也就是「數(shù)據(jù)流」,數(shù)據(jù)流可以是某個文件(xx.php)或某個url(http://www.baidu.com)。

php://filter 可以在訪問數(shù)據(jù)流之前進行「過濾」,并指定過濾方式。

php://filter 有4個可用參數(shù):

名稱 描述
resource=<要過濾的數(shù)據(jù)流> 這個參數(shù)是必須的。它指定了你要篩選過濾的數(shù)據(jù)流。
read=<讀鏈的篩選列表> 該參數(shù)可選??梢栽O(shè)定一個或多個過濾器名稱
write=<寫鏈的篩選列表> 該參數(shù)可選。可以設(shè)定一個或多個過濾器名稱
<;兩個鏈的篩選列表> 任何沒有以 read=write= 作前綴 的篩選器列表會視情況應(yīng)用于讀或?qū)戞湣?/td>

提示:read/write參數(shù)不是必須的,可以直接使用過濾器,比如 php://filter/convert.base64-encode/resource=hello.php

一、訪問數(shù)據(jù)流

直接「讀取」數(shù)據(jù)源的內(nèi)容,resource 參數(shù)必須位于 php://filter 的末尾,并指定需要過濾篩選的數(shù)據(jù)流。

1)讀取「url形式」的數(shù)據(jù)流。

<?php
# 指定源文件,實際上沒有應(yīng)用過濾,會直接輸出 http://www.baidu.com網(wǎng)頁的內(nèi)容
# 等同于readfile('http://www.baidu.com');
readfile('php://filter/resource=http://www.baidu.com');

因為沒指定過濾條件彈了幾條告警,不影響執(zhí)行結(jié)果,不用管。

PHP偽協(xié)議filter詳解,php://filter協(xié)議過濾器

2)讀取「文件形式」的數(shù)據(jù)流。

<?php
# 指定源文件,實際上沒有應(yīng)用過濾,會直接輸出 hello.php文件的內(nèi)容
# 等同于 include('hello.php');
include('php://filter/resource=hello.php');

同樣因為沒指定過濾條件彈了幾條告警,不影響執(zhí)行結(jié)果,不用管。

PHP偽協(xié)議filter詳解,php://filter協(xié)議過濾器

二、過濾數(shù)據(jù)流

讀取數(shù)據(jù)源之前,添加「過濾條件」。

1)以「大寫字母」讀取 http://www.baidu.com頁面的全部內(nèi)容

<?php
readfile("php://filter/read=string.toupper/resource=http://www.baidu.com");

PHP偽協(xié)議filter詳解,php://filter協(xié)議過濾器

2)以「小寫字母」讀取 hello.php文件的全部內(nèi)容

<?php
include("php://filter/read=string.tolower/resource=hello.php");

PHP偽協(xié)議filter詳解,php://filter協(xié)議過濾器

  1. hello.php文件的內(nèi)容「base64加密」后讀取出來。
    include()包含的文件,默認會執(zhí)行文件中的代碼,但加密后的內(nèi)容不會被執(zhí)行,而是直接輸出在頁面中,復(fù)制后解密就能拿到被包含文件的內(nèi)容。
<?php
include("php://filter/read=convert.base64-encode/resource=hello.php");

PHP偽協(xié)議filter詳解,php://filter協(xié)議過濾器

三、多個過濾條件

同時使用「多個過濾條件」時,使用管道符 | 分隔。

1)base64加密并且轉(zhuǎn)換為大寫

<?php
include('php://filter/read=convert.base64-encode|string.toupper/resource=hello.php');

按照「從左到右」的順序過濾,過濾條件的順序可能會影響過濾的結(jié)果,比如:先轉(zhuǎn)換大寫再過濾的話,輸出的結(jié)果就會變成小寫的base64編碼。

PHP偽協(xié)議filter詳解,php://filter協(xié)議過濾器

四、過濾并寫入數(shù)據(jù)流

write 參數(shù),過濾指定字符,并將過濾后的結(jié)果「輸出」到指定文件中。

1)過濾字符,并輸出到 result.txt文件中。

<?php
file_put_contents('php://filter/write=string.tolower/resource=result.txt','hello text');

PHP偽協(xié)議filter詳解,php://filter協(xié)議過濾器

五、過濾器

1、string.rot13

string.rot13 ,PHP4.3.0及以后版本,對數(shù)據(jù)流的內(nèi)容進行「rot13編碼」,等于用str_rot13() 函數(shù)編碼。

ROT13(otate by 13 places)也叫回轉(zhuǎn)13位,是一種替換式密碼。

ROT13會把每一個字母替換成13位之后的字母,也就是把a換成n,b換成o,以此類推;如果超過了26個字母的范圍,就會從開頭重新開始。

ROT13轉(zhuǎn)換對照表
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm

常用方式:rot13編碼讀取文件內(nèi)容后,復(fù)制頁面輸出的編碼后的內(nèi)容,手動用str_rot13()函數(shù)解碼。

# rot13編碼后讀取 hello.php文件的內(nèi)容
include('php://filter/read=string.rot13/resource=hello.php');

# 手動復(fù)制編碼后的結(jié)果,輸出rot13解碼后的內(nèi)容。
print str_rot13("<?cuc
rpub 'uryyb.cuc文件的內(nèi)容:uryyb grfg';");

PHP偽協(xié)議filter詳解,php://filter協(xié)議過濾器

2、string.toupper

string.toupper,PHP5.0.0及以后版本,將數(shù)據(jù)流轉(zhuǎn)換成「大寫」,類似于 strupper() 函數(shù)。

需要注意的是,string.tuupper不是直接將文件內(nèi)容變成大寫,而是先執(zhí)行文件內(nèi)容,再將執(zhí)行后的結(jié)果轉(zhuǎn)換成大寫。

# string.touper過濾器將 hello.php文件內(nèi)容轉(zhuǎn)換成大寫
include('php://filter/read=string.toupper/resource=hello.php');

echo "\n";
# 手動復(fù)制 hello.php文件內(nèi)容,并使用strtoupper()轉(zhuǎn)換成大寫
echo strtoupper("<?php
echo 'hello.php文件的內(nèi)容:hello test';");

PHP偽協(xié)議filter詳解,php://filter協(xié)議過濾器

3、string.tolower

string.tolower,PHP5.0.0及以后版本,將數(shù)據(jù)流轉(zhuǎn)換成「小寫」,類似 strtolower()函數(shù)。

和 string.toupper,也是先執(zhí)行文件的內(nèi)容,再將執(zhí)行后的結(jié)果轉(zhuǎn)換成小寫。

4、convert.base64-encode

1)convert.base64-encode,對數(shù)據(jù)流的內(nèi)容進行「base64編碼」,相當于 base64_encode()函數(shù)。

hello.php文件

<?php
echo 'hello.php文件的內(nèi)容:hello test';

filter.php文件

<?php
include('php://filter/read=convert.base64-encode/resource=hello.php');

對 hello.php文件內(nèi)容進行base64編碼

PHP偽協(xié)議filter詳解,php://filter協(xié)議過濾器

2)編碼后的內(nèi)容可以使用 base64_decode()函數(shù)解碼

print base64_decode('PD9waHANCmVjaG8gJ2hlbGxvLnBocOaWh+S7tueahOWGheWuue+8mmhlbGxvIHRlc3QnOw0KDQoNCg0KDQo=');

PHP偽協(xié)議filter詳解,php://filter協(xié)議過濾器

5、convert.iconv.*

convert.iconv.*,將數(shù)據(jù)流的內(nèi)容按照「指定字符編碼」來轉(zhuǎn)換,使用格式有兩種:

格式一:.分隔

convert.iconv.<input-encoding>.<output-encoding> 

格式二:/分隔

convert.iconv.<input-encoding>/<output-encoding>

比如,convert.iconv.utf-8*.utf-16* 的意思就是把文件的字符編碼從 utf-8* 轉(zhuǎn)換為 utf-16*

支持的字符編碼有:

UCS-4*
UCS-4BE
UCS-4LE*
UCS-2
UCS-2BE
UCS-2LE
UTF-32*
UTF-32BE*
UTF-32LE*
UTF-16*
UTF-16BE*
UTF-16LE*
UTF-7
UTF7-IMAP
UTF-8*
ASCII*
EUC-JP*
SJIS*
eucJP-win*
SJIS-win*
ISO-2022-JP
ISO-2022-JP-MS
CP932
CP51932
SJIS-mac (alias: MacJapanese)
SJIS-Mobile#DOCOMO (alias: SJIS-DOCOMO)
SJIS-Mobile#KDDI (alias: SJIS-KDDI)
SJIS-Mobile#SOFTBANK (alias: SJIS-SOFTBANK)
UTF-8-Mobile#DOCOMO (alias: UTF-8-DOCOMO)
UTF-8-Mobile#KDDI-A
UTF-8-Mobile#KDDI-B (alias: UTF-8-KDDI)
UTF-8-Mobile#SOFTBANK (alias: UTF-8-SOFTBANK)
ISO-2022-JP-MOBILE#KDDI (alias: ISO-2022-JP-KDDI)
JIS
JIS-ms
CP50220
CP50220raw
CP50221
CP50222
ISO-8859-1*
ISO-8859-2*
ISO-8859-3*
ISO-8859-4*
ISO-8859-5*
ISO-8859-6*
ISO-8859-7*
ISO-8859-8*
ISO-8859-9*
ISO-8859-10*
ISO-8859-13*
ISO-8859-14*
ISO-8859-15*
ISO-8859-16*
byte2be
byte2le
byte4be
byte4le
BASE64
HTML-ENTITIES (alias: HTML)
7bit
8bit
EUC-CN*
CP936
GB18030
HZ
EUC-TW*
CP950
BIG-5*
EUC-KR*
UHC (alias: CP949)
ISO-2022-KR
Windows-1251 (alias: CP1251)
Windows-1252 (alias: CP1252)
CP866 (alias: IBM866)
KOI8-R*
KOI8-U*
ArmSCII-8 (alias: ArmSCII8)

粉絲福利

評論區(qū)留言即可參與抽獎,下圖9本書中任選一本。

618,清華社 IT BOOK 多得圖書活動開始啦!活動時間為 2023 年 6 月 7 日至 6 月 18 日,清華
社為您精選多款高分好書,涵蓋了 C++、Java、Python、前端、后端、數(shù)據(jù)庫、算法與機器學(xué)習(xí)等多 個 IT
開發(fā)領(lǐng)域,適合不同層次的讀者。全場 5 折,掃碼領(lǐng)券更有優(yōu)惠哦!文章來源地址http://www.zghlxwxcb.cn/news/detail-482091.html

到了這里,關(guān)于PHP偽協(xié)議filter詳解,php://filter協(xié)議過濾器的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • SpringBoot之過濾器Filter詳解及登錄校驗

    SpringBoot之過濾器Filter詳解及登錄校驗

    目錄 1 快速入門 2.Filter詳解 2.1 執(zhí)行流程 2.2 攔截路徑 2.3 過濾器鏈 3.登錄校驗-Filter 3.1 分析 3.2 具體流程 3.3 代碼實現(xiàn) 什么是Filter? Filter表示過濾器,是 JavaWeb三大組件(Servlet、Filter、Listener)之一。 過濾器可以把對資源的請求攔截下來,從而實現(xiàn)一些特殊的功能 使用了過濾器

    2024年02月04日
    瀏覽(23)
  • 詳解過濾器Filter和攔截器Interceptor的區(qū)別和聯(lián)系

    詳解過濾器Filter和攔截器Interceptor的區(qū)別和聯(lián)系

    目錄 前言 區(qū)別 聯(lián)系 過濾器(Filter)和攔截器(Interceptor)都是用于在Web應(yīng)用程序中處理請求和響應(yīng)的組件,但它們在實現(xiàn)方式和功能上有一些區(qū)別。 1. 實現(xiàn)方式: - 過濾器是基于Servlet規(guī)范的組件,通過實現(xiàn) javax.servlet.Filter接口 來定義。過濾器可以在請求被處理之前和響應(yīng)被發(fā)送

    2024年02月11日
    瀏覽(25)
  • 一文詳解過濾器Filter、攔截器Interceptor和切面Aspect的區(qū)別

    一文詳解過濾器Filter、攔截器Interceptor和切面Aspect的區(qū)別

    目錄 Filter過濾器 作用 應(yīng)用場景 攔截器Interceptor Aspect切片 三者對比 執(zhí)行順序 攔截層面 過濾器Filter和攔截器Interceptor的區(qū)別 Filter 過濾器它是 JavaWeb 的三大組件之一 三大組件分別是:Servlet 程序、Listener 監(jiān)聽器、Filter 過濾器 Filter 過濾器它是 JavaEE 的規(guī)范 Filter隨web應(yīng)用的啟動

    2024年02月04日
    瀏覽(38)
  • 【Spring】Springboot過濾器Filter和攔截器Inteceptor詳解及使用場景

    Springboot過濾器Filter和攔截器Inteceptor詳解及使用場景

    2024年02月13日
    瀏覽(35)
  • 深入理解PHP+Redis實現(xiàn)布隆過濾器(億級大數(shù)據(jù)處理和黑客攻防必備)

    英文名稱Bloom Filter,用于判斷一個元素是否在一個大數(shù)據(jù)集合中,如果檢測到存在則有可能存在,如果不存在則一定不存在。 Redis官網(wǎng)對于布隆過濾器的說明:https://redis.io/docs/data-types/probabilistic/bloom-filter/ 防止緩存穿透:用于快速判斷某個商品數(shù)據(jù)是否存在于緩存中,如果存

    2024年04月09日
    瀏覽(29)
  • 認識Filter(過濾器)

    認識Filter(過濾器)

    Filter介紹 在計算機編程中,F(xiàn)ilter(過濾器)是一種用于對數(shù)據(jù)流進行處理的軟件組件。Filter 的作用是從輸入流中獲取數(shù)據(jù),對其進行處理后再將其寫入輸出流中。Filter 組件通常用于數(shù)據(jù)校驗、數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)壓縮等方面,以及對網(wǎng)絡(luò)通信進行處理。在 Web 開發(fā)中,F(xiàn)ilter 是

    2024年02月02日
    瀏覽(31)
  • Filter 過濾器

    Filter 過濾器

    Filter過濾器介紹 這里我們講解Filter的執(zhí)行流程,從下圖可以大致了解到,當客戶端發(fā)送請求的時候,會經(jīng)過過濾器,然后才能到我們的servlet,當我們的servlet處理完請求之后,我們的response還是先經(jīng)過過濾器才能到達我們的客戶端,這里我們進行一個代碼的演示,看看具體執(zhí)

    2024年02月02日
    瀏覽(28)
  • 過濾器Filter

    過濾器Filter

    什么是Filter? Filter表示過濾器,是JavaWeb三大組件(Servlet、FIlter、Listener)之一。 過濾器可以把對資源的請求攔截下來,總而實現(xiàn)一些特殊的功能 使用過濾器后,要想訪問web服務(wù)器上的資源,必須先經(jīng)過過濾器,過濾器處理完畢后,才可以訪問對應(yīng)的資源。 過濾器一般完成

    2023年04月12日
    瀏覽(28)
  • 結(jié)果過濾器—MVC項目中結(jié)果過濾器(Result Filter)使用

    結(jié)果過濾器—MVC項目中結(jié)果過濾器(Result Filter)使用

    結(jié)果過濾器( ResultFilter ),是對執(zhí)行的Action結(jié)果進行處理的一種AOP思想,適用于任何需要直接環(huán)繞 View 或格式化處理的邏輯。結(jié)果過濾器可以 替換或更改 Action 結(jié)果 。在 IActionResult 執(zhí)行的前后執(zhí)行,使用它能夠控制Action的執(zhí)行結(jié)果,比如:格式化結(jié)果等。需要注意的是,它只

    2024年02月12日
    瀏覽(102)
  • java過濾器(Filter)

    java過濾器(Filter)

    原文鏈接: java過濾器(Filter – 編程屋 目錄 1 過濾器簡介 2 Filter詳細介紹 3 Filter的用法 3.1 用法1 ?3.2 用法2 filter也稱之為過濾器,它是javaWeb三大組件之一(Servlet程序、Listener監(jiān)聽器、Filter過濾器) 作用: 既可以對請求進行攔截,也可以對響應(yīng)進行處理。 常見場景: 權(quán)限檢

    2024年02月20日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包