php 지원 프로 토 콜 및 패키지 프로 토 콜 요약(추천)

머리말
현재 웹 프로그램의 개발 기술 은 정말 백가쟁명,ASP.NET,PHP,JSP,Perl,AJAX 등 이다.웹 기술 이 미래 에 어떻게 발전 하 든 웹 프로그램 간 통신 의 기본 협 의 를 이해 하 는 것 은 상당히 중요 하 다.왜냐하면 이것 은 우리 로 하여 금 웹 응용 프로그램의 내부 업 무 를 이해 하 게 하기 때문이다.
PHP 는 내 장 된 URL 스타일 의 패 키 징 프로 토 콜 을 많이 가지 고 있 으 며,fopen(),copy(),file 와 유사 합 니 다.exists()와 filesize()의 파일 시스템 함수.이 패키지 프로 토 콜 외 에 streamwrapper_register()는 사용자 정의 패키지 프로 토 콜 을 등록 합 니 다.
참고:패 키 징 프로 토 콜 을 설명 하 는 URL 문법 은 지원 합 니 다.scheme://... 의 문법.scheme:/와 scheme:문법 은 지원 되 지 않 습 니 다.
php 프로 토 콜 형식
  • file://로 컬 파일 시스템 방문
  • http://HTTP(s)사이트 방문
  • ftp://방문 FTP(s)URL
  • php://각 입 출력 흐름(I/O streams)
  • 방문
  • zlib:/압축 흐름
  • data://―data(RFC 2397)
  • glob:/-일치 하 는 파일 경로 찾기 모드
  • phar://PHP 압축 파일
  • ssh2:// ― Secure Shell 2
  • rar:// ― RAR
  • ogg:/-오디 오 흐름
  • expect:/처리 상호작용 의 흐름
  • PHP.ini
  • allow_url_fopen:on 기본 값 으로 이 옵션 을 켜 면 URL 형식의 fopen 패 키 징 프로 토 콜 을 활성화 하여 URL 대상 파일 에 접근 할 수 있 습 니 다.
  • allow_url_include:off 기본 값 으로 닫 습 니 다.이 옵션 은 on 이면 URL 대상 파일 등
  • 을 포함 할 수 있 습 니 다.
    file://프로 토 콜
    file://로 컬 파일 시스템 에 접근 하여 allow 를 받 지 않 습 니 다.url_fopen 과 allowurl_include 의 영향

    사용 방법
    file://[파일 의 절대 경로 와 파일 이름]
    
    http://127.0.0.1/code/1.php?file=file:///E:\phpStudy\WWW\code\phpinfo.php

    php://프로 토 콜
    php:/-각 입 출력 흐름 에 접근(I/O streams)
    allow 오픈 필요 없 음url_fopenphp://input、 php://stdin、 php://memory 화해시키다php://temp allow 오픈 필요url_include。
    php://stdin, php://stdout 화해시키다php://stderr
    php://stdin、php://stdout 화해시키다php://stderr PHP 프로 세 스 의 입력 이나 출력 흐름 에 직접 접근 할 수 있 습 니 다.
    php://stdin 읽 기만 하고,php://stdout 화해시키다php://stderr 그냥 쓴 거 야.
    php://stdin
    
    <?php
     while($line = fopen('php://stdin','r'))
     {//open our file pointer to read from stdin
     echo $line."
    "; echo fgets($line);// } ?>

    php://stdout
    
    <?php
     $fd = fopen('php://stdout', 'w');
     if ($fd) {
     echo $fd."
    "; fwrite($fd, "test"); fwrite($fd, "
    "); fclose($fd); } ?>

    php://stderr
    
    <?php
     $stderr = fopen( 'php://stderr', 'w' );
     echo $stderr."
    "; fwrite($stderr, "uknow" ); fclose($stderr); ?>

    php://filter
    가장 자주 사용 되 는 위조 프로 토 콜 은 일반적으로 임의의 파일 을 이용 하여 읽 을 수 있다.
    php://filter 데이터 흐름 이 열 릴 때 필터 링 을 위 한 메타 패키지 입 니 다.이것 은 일체 형(all-in-one)파일 함수 에 매우 유용 합 니 다.readfile(),file(),file 과 유사 합 니 다.get_contents(),데이터 흐름 내용 을 읽 기 전에 다른 필 터 를 사용 할 기회 가 없습니다.
    매개 변수
    명칭.
    묘사 하 다.
    resource=<걸 러 낼 데이터 흐름>
    이 매개 변 수 는 필수 입 니 다.필터 할 데이터 흐름 을 지정 합 니 다.
    read=<읽 기 체인 의 선별 목록>
    이 매개 변 수 는 선택 할 수 있 습 니 다.파이프 문자 로 하나 이상 의 필터 이름 을 설정 할 수 있 습 니 다.
    write=<체인 필터 링 목록>
    이 매개 변 수 는 선택 할 수 있 습 니 다.파이프 문자 로 하나 이상 의 필터 이름 을 설정 할 수 있 습 니 다.
    <;두 체인 의 선별 목록>
    read=또는 write=접두사 가 없 는 필터 목록 은 상황 에 따라 읽 거나 쓰기 체인 에 적 용 됩 니 다.
    
    <?php
    	include($_GET['file'])
    ?>
    
    http://127.0.0.1/code/1.php?file=php://filter/read=convert.base64-encode/resource=./phpinfo.php


    php://input
    php://input 요청 한 원본 데이터 의 읽 기 전용 흐름 에 접근 할 수 있 으 며,post 요청 한 데 이 터 를 PHP 코드 로 실행 합 니 다.
  • allow_url_fopen :off/on
  • allow_url_include:on

  • zip:/,bzip 2:/,zlib:/프로 토 콜
    zip:/,bzip 2:/,zlib:/프로 토 콜 은 쌍 off 의 경우 에 도 정상적으로 사용 할 수 있 습 니 다.
    zip:/,bzip 2:/,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

    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=


    glob://프로 토 콜
    glob:/-일치 하 는 파일 경로 찾기 모드
    
    <?php
    $it = new DirectoryIterator($_GET['file']);
    foreach($it as $f) {
     printf("%s", $f->getFilename());
    	echo'</br>'; 
    }
    ?>

    expect://프로 토 콜
    인 터 랙 티 브 흐름 처리
    이 패키지 프로 토 콜 은 기본적으로 열 리 지 않 았 습 니 다.
    expect://패 키 징 기 를 사용 하기 위해 서 는»PECL 의»Expect 확장 을 설치 해 야 합 니 다.
    사용법
    
    expect://command
    첨부:HTTP 프로 토 콜 은 무상 태 와 Connection:keep-alive 의 차이 점
    무상 태 란 프로 토 콜 이 사무 처리 에 대한 기억력 이 없고 서버 가 클 라 이언 트 가 어떤 상태 인지 모른다 는 것 을 말한다.다른 한편,서버 에 있 는 웹 페이지 를 여 는 것 은 당신 이 이전에 이 서버 에 있 는 웹 페이지 를 여 는 것 과 아무런 연락 이 없습니다.
    HTTP 는 연결 을 위 한 상태 가 없 는 프로 토 콜 입 니 다.상태 가 없 으 면 HTTP 가 TCP 연결 을 유지 하지 못 하 는 것 도 아니 고,HTTP 가 UDP 프로 토 콜(연결 없 음)을 사용 하 는 것 도 아 닙 니 다.
    HTTP/1.1 부터 기본적으로 Keep-Alive 를 켜 서 연결 기능 을 유지 합 니 다.쉽게 말 하면 웹 페이지 가 열 리 면 클 라 이언 트 와 서버 간 에 HTTP 데 이 터 를 전송 하 는 TCP 연결 이 닫 히 지 않 습 니 다.클 라 이언 트 가 이 서버 의 웹 페이지 를 다시 방문 하면 이미 만들어 진 연결 을 계속 사용 합 니 다.
    Keep-Alive 는 연결 을 영구적 으로 유지 하지 않 습 니 다.유지 시간 이 있 습 니 다.다른 서버 소프트웨어(예:Apache)에서 이 시간 을 설정 할 수 있 습 니 다.
    총결산
    이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.
    Reference
  • PHP
  • php 위조 프로 토 콜 명령 실행 7 가지 자세
  • 좋은 웹페이지 즐겨찾기