Zusammenfassung der von PHP unterstützten Protokolle und Kapselungsprotokolle (empfohlen)

不言
Freigeben: 2023-03-24 19:20:02
Original
2452 Leute haben es durchsucht

Dieser Artikel stellt Ihnen hauptsächlich relevante Informationen zu den von PHP unterstützten Protokollen und Kapselungsprotokollen vor. Er bietet einen gewissen Referenz-Lernwert für alle, die PHP benötigen können Sie Let’s learning gemeinsam mit dem Herausgeber verfolgen.

Vorwort

Die heutige Webprogramm-Entwicklungstechnologie besteht wirklich aus hunderten konkurrierenden Denkrichtungen: ASP.NET, PHP, JSP, Perl, AJAX und so weiter. Unabhängig davon, wie sich die Web-Technologie in Zukunft entwickelt, ist das Verständnis der grundlegenden Protokolle für die Kommunikation zwischen Web-Programmen wichtig, da es uns ermöglicht, das Innenleben von Web-Anwendungen zu verstehen.

PHP verfügt über viele integrierte Wrapper-Protokolle im URL-Stil für Dateisystemfunktionen wie fopen(), copy(), file_exists() und filesize(). Zusätzlich zu diesen Wrapper-Protokollen können auch benutzerdefinierte Wrapper-Protokolle über stream_wrapper_register() registriert werden.

Hinweis: Die zur Beschreibung eines Kapselungsprotokolls verwendete URL-Syntax unterstützt nur die Syntax „scheme://...“. scheme:/ und scheme:-Syntax werden nicht unterstützt.

php-Protokolltyp

  • file:// – Zugriff auf das lokale Dateisystem

  • http:// – Zugriff auf HTTP(s)-URLs

  • ftp:// – Zugriff auf FTP(s)-URLs

  • php:// – Zugriff auf verschiedene Eingabe-/Ausgabe-Streams (I/O-Streams)

  • zlib:// – Komprimierte Streams

  • Daten: // – Daten (RFC 2397)

  • glob:// – Passendes Dateipfadmuster finden

  • phar:// – PHP-Archiv

  • ssh2:// – Secure Shell 2

  • rar:// – RAR

  • ogg :// – Audio-Streaming

  • expect:// – Umgang mit interaktivem Streaming

PHP.ini

  • allow_url_fopen: on Standardmäßig bedeutet das Einschalten dieser Option, dass das fopen-Kapselungsprotokoll in Form einer URL aktiviert wird, was den Zugriff auf URL-Objektdateien usw. ermöglicht.

  • allow_url_include: off ist standardmäßig deaktiviert. Wenn diese Option aktiviert ist, ermöglicht sie die Einbeziehung von URL-Objektdateien usw.

file: //Protokoll

file:// – Zugriff auf das lokale Dateisystem, nicht betroffen vonallow_url_fopen undallow_url_include

Verwendung

file:// [absoluter Pfad und Dateiname der Datei]

http://127.0.0.1/code/1.php?file=file:///E:\phpStudy\WWW\code\phpinfo.php
Nach dem Login kopieren

php://Protokoll

php:// – Zugriff auf verschiedene Eingabe-/Ausgabeströme (E/A-Streams)

Sie müssen „allow_url_fopen“ nicht aktivieren, nur php://input, php://stdin, php://memory und php://temp müssen „allow_url_include“ aktivieren.

php://stdin, php://stdout und php://stderr

php://stdin, php:/ //stdout und php://stderr ermöglichen den direkten Zugriff auf die entsprechenden Eingabe- oder Ausgabeströme des PHP-Prozesses.

php://stdin ist schreibgeschützt, php://stdout und php://stderr sind schreibgeschützt.

php://stdin

<?php
 while($line = fopen(&#39;php://stdin&#39;,&#39;r&#39;))
 {//open our file pointer to read from stdin
 echo $line."\n";
 echo fgets($line);//读取
 }
?>
Nach dem Login kopieren

php: //stdout

<?php
 $fd = fopen(&#39;php://stdout&#39;, &#39;w&#39;);
 if ($fd) {
 echo $fd."\n";
 fwrite($fd, "test");
 fwrite($fd, "\n");
 fclose($fd);
 }
?>
Nach dem Login kopieren

php://stderr

<?php
 $stderr = fopen( &#39;php://stderr&#39;, &#39;w&#39; );
 echo $stderr."\n";
 fwrite($stderr, "uknow" );
 fclose($stderr);
?>
Nach dem Login kopieren

php://filter

Am häufigsten verwendet A Pseudoprotokoll, das grundsätzlich zum Lesen beliebiger Dateien verwendet werden kann.

php://filter ist ein Meta-Wrapper, der zum Filtern von Anwendungen beim Öffnen eines Datenstroms entwickelt wurde. Dies ist nützlich für All-in-One-Dateifunktionen wie readfile(), file() und file_get_contents(), bei denen keine Möglichkeit besteht, zusätzliche Filter anzuwenden, bevor der Stream-Inhalt gelesen wird.

Parameter


名称描述
resource=<要过滤的数据流>这个参数是必须的。它指定了你要筛选过滤的数据流。
read=<读链的筛选列表>该参数可选。可以设定一个或多个过滤器名称,以管道符分隔。
write=<写链的筛选列表>该参数可选。可以设定一个或多个过滤器名称,以管道符分隔。
<;两个链的筛选列表>任何没有以 read= 或 write= 作前缀 的筛选器列表会视情况应用于读或写链。

<?php
	include($_GET[&#39;file&#39;])
?>
Nach dem Login kopieren

http://127.0.0.1/code/1.php?file=php://filter/read=convert.base64-encode/resource=./phpinfo.php
Nach dem Login kopieren

php://input

php://input 可以访问请求的原始数据的只读流, 将post请求中的数据作为PHP代码执行。

  • allow_url_fopen :off/on

  • allow_url_include:on

zip://, bzip2://, zlib://协议

zip://, bzip2://, zlib://协议在双off的情况下也可以正常使用;

zip://, bzip2://, zlib:// 均属于压缩流,可以访问压缩文件中的子文件,更重要的是不需要指定后缀名。

  • allow_url_fopen :off/on

  • allow_url_include:off/on

使用方法

zip://archive.zip#dir/file.txt

zip:// [压缩文件绝对路径]#[压缩文件内的子文件名]

测试

先将要执行的PHP代码写好文件名为phpcode.txt,将phpcode.txt进行zip压缩,压缩文件名为file.zip,如果可以上传zip文件便直接上传,若不能便将file.zip重命名为file.jpg后在上传,其他几种压缩格式也可以这样操作。

由于#在get请求中会将后面的参数忽略所以使用get请求时候应进行url编码为%23,且此处经过测试相对路径是不可行,所以只能用绝对路径。

http://127.0.0.1/code/1.php?file=zip://E:\phpStudy\WWW\code/1.zip%231.txt
Nach dem Login kopieren

data://协议

data://协议必须双在on才能正常使用;

  • allow_url_fopen :on

  • allow_url_include:on

http://127.0.0.1/code/1.php?file=data://text/plain,<?php phpinfo()?>
http://127.0.0.1/code/1.php?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=
Nach dem Login kopieren

glob://协议

glob:// — 查找匹配的文件路径模式

<?php
$it = new DirectoryIterator($_GET[&#39;file&#39;]);
foreach($it as $f) {
 printf("%s", $f->getFilename());
	echo&#39;</br>&#39;; 
}
?>
Nach dem Login kopieren

expect://协议

expect:// — 处理交互式的流

该封装协议默认未开启

为了使用 expect:// 封装器,你必须安装 » PECL 上的 » Expect 扩展。

用法

expect://command
Nach dem Login kopieren

附:HTTP协议是无状态的和Connection: keep-alive的区别

无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。从另一方面讲,打开一个服务器上的网页和你之前打开这个服务器上的网页之间没有任何联系

HTTP是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(无连接)

从HTTP/1.1起,默认都开启了Keep-Alive,保持连接特性,简单地说,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接

Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间

总结

Reference

  • PHP

  • php伪协议实现命令执行的七种姿势

Das obige ist der detaillierte Inhalt vonZusammenfassung der von PHP unterstützten Protokolle und Kapselungsprotokolle (empfohlen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage