어둠사자

PHP가 없는 환경에서 PHP 라이브러리 호출하기

· 2024-11-26 (화) 04:33:01 · 2264 · 4

특수한 경우에 한하지만, PHP가 없는 환경에서 기존 환경을 최대한 해치지 않고 PHP 라이브러리를 호출하는 최선의 방법을 고민하며 나온 결과물을 공유해봅니다.

 

사용 예시:

 

> set target https://public-api.example.org

> set method relay_invoke_method

method(relay_invoke_method)> set requires https://raw.githubusercontent.com/dimamedia/PHP-Simple-TOTP-and-PubKey/refs/heads/master/class.tfa.php

method(relay_invoke_method)> show env

{

    "target": "https://public-api.example.org",

    "method": "relay_invoke_method",

    "filename": null,

    "requires": [

        "https://raw.githubusercontent.com/dimamedia/PHP-Simple-TOTP-and-PubKey/refs/heads/master/class.tfa.php"

    ]

}

method(relay_invoke_method)> do load_script "$tfa = new tfa(); return $tfa->getPubKey()"

RESB 4Y24 3U2K OA2W

method(relay_invoke_method)> do load_script "$tfa = new tfa(); return $tfa->getOtp('RESB 4Y24 3U2K OA2W')"

174053

method(relay_invoke_method)> 

 

서버에 "class.tfa.php"라는 클래스 파일을 전혀 업로드하지 않았으나, 깃허브(또는 공개된 URL)에서 호스팅되고 있는 PHP 파일 주소를 입력하는 것만으로도 바로 불러와서 라이브러리로 활용한 사례입니다.

사용 방법:

1. JSON-RPC 2.0 형식을 해석하고 명령 수행이 가능한 PHP 스크립트를 내려받고 서버에 올린다.

    https://github.com/gnh1201/caterpillar/blob/main/assets/php/index.php

 

2. 사용 예시의 실제 메시지는 다음과 같다. 스크립트가 있는 위치에 POST 요청을 보내어 사용할 수 있다.


요청 예시:

 

{
  "jsonrpc": "2.0",
  "method": "relay_invoke_method",
  "params": {
    "callback": "load_script",
    "requires": [
      "https://raw.githubusercontent.com/dimamedia/PHP-Simple-TOTP-and-PubKey/refs/heads/master/class.tfa.php"
    ],
    "args": [
      "$tfa = new tfa(); return $tfa->getPubKey()"
    ]
  },
  "id": null
}

 

응답 예시:

 

{
    "jsonrpc": "2.0",
    "result": {
        "status": 200,
        "data": "B7FJ 43QC 7WCX CLAY"
    },
    "id": null,
    "_execution_time": 0.017116069793701
}

 

 

보안 정책만 잘 조정하여 사용할 수 있다면 특수한 경우에 유용할 것으로 보입니다.

|

댓글 4개

잘봤습니다.

오 이런 케이스도 있군요. 대단합니다.

2024-12-07 (토) 09:30:03

와 대단하십니다.

2024-12-15 (일) 13:25:21

훌륭한 아이디어입니다.

댓글을 작성하시려면 로그인이 필요합니다.

개발자팁

5,403건

개발과 관련된 유용한 정보를 공유하세요. 질문은 QA에서 해주시기 바랍니다.

+
분류 제목 글쓴이 날짜 조회
MySQL 24-12-14 조회 1,770
기타 24-12-14 조회 1,937
JavaScript 24-12-13 조회 1,987
JavaScript 24-12-13 조회 1,577
PHP 24-12-13 조회 2,041
PHP 24-11-26 조회 2,265
기타 24-11-14 조회 2,394
기타 24-10-30 조회 2,309
PHP 24-10-11 조회 2,067
JavaScript 24-10-10 조회 1,247
JavaScript 24-09-26 조회 1,784
24-09-25 조회 2,273
JavaScript 24-09-07 조회 2,031
24-09-11 조회 1,486
24-09-19 조회 2,427
24-09-10 조회 1,866
24-08-19 조회 1,591
24-10-03 조회 1,649
24-08-07 조회 1,219
24-07-23 조회 1,912
24-07-08 조회 1,503
24-06-27 조회 1,406
PHP 24-08-23 조회 1,598
PHP 24-07-31 조회 1,343
OS 24-07-22 조회 1,749
기타 24-07-22 조회 1,186
기타 24-07-12 조회 1,401
기타 24-07-02 조회 1,534
기타 24-07-02 조회 1,082
JavaScript 24-06-30 조회 1,203