ASK-SFTP 1.0.1 (웹편집기) > 그누보드5 플러그인

그누보드5 플러그인

그누보드는 다양한 기능을 추가하기 쉽습니다.

ASK-SFTP 1.0.1 (웹편집기) 정보

ASK-SFTP 1.0.1 (웹편집기)

첨부파일

ask-sftp.1.0.1.7z (3.5M) 40회 다운로드 2023-05-19 10:19:19 포인트 차감100
테스트한 버전5.5.8.3
호환 가능 버전모든버전

본문

1.0.1 수정사항

 - 파일 목록 htmlspecialchars 적용

 - 파일 저장시 경로, 확장자 체크

 - alert 삭제

 - 기타 라엘님 리뷰관련 내용 수정되었습니다. 감사합니다.

 

 

 

웹에서 SFTP를 통해 파일 편집할 수 있는 플러그인입니다.

그누보드 기능 이용하지 않습니다.

원본 편집해서 그누보드, 영카트 오류시에도 사용가능합니다. 

두군데만 테스트 해봐서 오류가 있을 수 있습니다. 

SSH  비번을 통한 접속만 됩니다. 

일반적인  SFTP 기능 없습니다. 귀찮아서...

급하게 외부에서 파일 수정해 줘야 할 경우에 사용하기 좋습니다. 반응형으로 휴대폰에서 사용가능합니다.

코드는 몇줄 안되는데 외부 라이브러리를 포함하다 보니 용량이 큽니다.

 

반디집으로 압축 해제하세요.

ftp용은 이전에 제가등록한게 있으니 사용하시면 됩니다.

 

요구사항

php7 이상

ssh2 라이브러리 설치

3553042157_1684367753.0461.png

 

 

기능

웹에서 서버 파일편집

단독사용가능

 

설치

ask-sftp.7z 파일을 압축 해제 후 ask-sftp 폴더를 plugin 폴더에 업로드 하세요.

(설치 경로는 plugin 아래가 아니어도 됩니다.)

내도메인/plugin/ask-sftp/ 에 접속하면 됩니다.

폴더명은 변경해서 사용하세요.

 

 

설정

plugin/ask-sftp/ask_sftp.lib.php 파일을 편집기로 열어 아래 내용을 설정하세요.

//핀 - 로그인시 입력해야 합니다. 원하는 번호, 문자로 설정하세요.

define('_SFTP_PIN', 'xxxxxxxx');

//암호화키 32자리 영문숫자, 임의로 변경해서 사용하세요. 노출금지

define('_SFTP_ENC_KEY', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');

 

//편집가능 파일 - .으로 시작하는 파일은 .을 제외한 파일명을 입력하세요. 예(.htaccess)

define('_SFTP_OPEN_FILES', array('php', 'txt', 'htm', 'html', 'css', 'js', 'htaccess'));

 

3553042157_1684290140.8633.png

반응형 , 모바일 지원

 

3553042157_1684290284.5016.png

 

 

3553042157_1684290462.0411.png

 

파일 편집 및 백업 기능

 

 

 

라이센스

ASK SFTP Client 이용약관
이 소프트웨어는 오픈소스로 제공되며, 무료로 사용할 수 있습니다.
재배포는 엄격히 금지됩니다. 소스 코드 또는 이 소프트웨어의 일부를 재배포하거나 다른 프로젝트에서 사용할 수 없습니다.
이 소프트웨어를 사용함으로써 발생하는 모든 결과에 대한 책임은 사용자에게 있습니다. 개발자는 어떠한 경우에도 책임을 지지 않습니다.
이 소프트웨어는 "있는 그대로" 제공되며, 어떠한 형태의 보증도 제공되지 않습니다. 모든 사용은 사용자의 책임하에 이루어져야 합니다.
이용자는 이 소프트웨어를 사용함으로써 관련 법률, 규정, 저작권 및 지적재산권을 준수해야 합니다.
이용자는 이 소프트웨어를 수정, 변경, 파생물 작성 등의 목적으로 사용할 수 있습니다. 하지만, 이용자는 이러한 수정된 버전을 비공개로 유지해야 합니다.
이용자는 소스 코드의 저작권 및 라이선스 공지를 삭제, 변경하지 않아야 합니다.
                    

추천
13
  • 복사

댓글 전체

ssh2가 설치는 어찌해야 합니까?

챗 지피티한테 물어보다가 얘도 잘 모르는거 같은데 아는척 하는거 같아서 불안하네요.
PEAR 다운로드 페이지: https://pear.php.net/download.php
PECL 다운로드 페이지: https://pecl.php.net/package/ssh2
위에서 다운받아 설치하라는데 맞는건지..  첫번째 링크는 깨져있고. 아래꺼는 확장자가 리눅스용 파일만 있더군요..

윈도우 환경에 XAMPP를 이용한 서버입니다.
PHP8.0.12 입니다.
윈도우에서 libssh2 라이브러리를 설치하고 PHP에서 SSH 연결을 위한 확장 모듈을 사용하려면 다음 단계를 따를 수 있습니다:

libssh2 라이브러리 다운로드:

libssh2 라이브러리의 최신 버전을 다운로드합니다. 다운로드 페이지: libssh2 - Downloads.
Windows용 libssh2 라이브러리를 제공하는 사이트에서 Windows용 바이너리를 다운로드할 수도 있습니다. (https://www.libssh2.org/download/)

libssh2 라이브러리 설치:

다운로드한 libssh2 바이너리를 압축해제합니다.
압축을 해제한 폴더 내에서 필요한 DLL 파일과 헤더 파일을 찾습니다.
DLL 파일을 시스템 PATH에 추가하거나 PHP 실행 파일이 있는 경로에 복사합니다.
PHP 확장 모듈 설치:

PHP 확장 모듈 중에서 SSH 연결을 지원하는 ssh2 확장 모듈을 설치해야 합니다.

PHP 버전에 맞는 ssh2 확장 모듈을 다운로드해야 합니다. 예를 들어, PHP 8.0 버전을 사용한다면 PHP 8.0용 ssh2 확장 모듈을 다운로드해야 합니다.

PHP 확장 모듈을 다운로드한 후, php.ini 파일을 열고 extension 디렉티브를 사용하여 ssh2 확장 모듈을 활성화합니다. 예를 들어, 다음과 같이 extension=ssh2로 활성화할 수 있습니다.

ini
Copy code
extension=ssh2
PHP의 확장 모듈 디렉토리로 ssh2 확장 모듈을 복사합니다. 일반적으로 ext 디렉토리에 위치하며, 이 디렉토리 경로는 PHP 설정에서 확인할 수 있습니다.

웹 서버 재시작:

PHP 설정이 변경되었으므로, 웹 서버 (예: Apache, Nginx)를 재시작해야 합니다.
이제 PHP에서 ssh2 확장 모듈을 사용하여 SSH 연결을 설정할 수 있습니다. ssh2_connect 함수 등을 사용하여 SSH 연결을 수행할 수 있습니다.


chatGPT 답변입니다
유용한 프로그램입니다.
코드리뷰를 해보자면,

1. 세션은 string 을 저장하는 공간입니다. session_start() 할때 key-value 형식으로 초기화 됩니다.
따라서 $_SESSION['ssh2_connection'] = $connection; 이런식의 resource handle 을 할당하는것은 부적절합니다.
session_start() 이후에 $_SESSION 이 초기화된 후에는 $_SESSION 변수는 전역변수로써 동작합니다. 즉 실행중에는 변수처럼 resource handle 을 저장할 수 있지만 session 값에 저장은 되지 않습니다.(다른 페이지에서 재사용 안됨)

2. connection 은 php 페이지의 응답이 끝날때 자동으로 끊어집니다. 즉 페이지마다 연결 및 끊기가 반복됩니다.
따라서 logout.php 의 ssh2_disconnect 관련 구문은 필요없습니다.
굳이 사용하자면, 커넥션을 사용한 직후인 index.php 의 17번째에 ssh2_disconnect($sftp) 를 넣을수 있겠네요.

3. 실질적으로 사용하는 변수는 ask_sftp.lib.php 111번째 줄의 $sftp 이며,
$_SESSION['ssh2_connection'], $_SESSION['sftp']  은 모든 부분에서 삭제해도 될듯합니다.

4. 인증체크 코드는
isset($_SESSION['sftp']) && !is_resource($_SESSION['sftp']) 대신
! isset($sftp) || ! is_resource($sftp) 가 나을것 같습니다.

5. php 에는 alert 이라는 함수가 없기 때문에 edit_save.php 의 일부코드는 오류가 발생할 것입니다. echo 정도가 적당해보입니다.

6. $_POST 변수는 super global 변수라서 모든 PHP 코드에서 항상 정의가 되어 있습니다.
PHP 가 empty array 를 false 와 같은취급(등가비교) 해버리기 때문에 우연히
!$_POST 가 의도대로 동작하지만, $_SERVER['REQUEST_METHOD'] !== 'POST' 로 작성하는 것이 좋습니다.

추가로 일어날 확률은 거의 0% 이지만 보안리뷰를 해보자면,
1. edit_save.php 의 current_dir, edit_file 변수를 조작해서 허용되지 않은 파일도 변경할 수 있습니다.
current_dir 가 home_dir 의 하위인지, edit_file 이 존재하고 허용한 확장자인지 검사하는 코드가 추가되면 좋을것 같습니다.

2. XSS 의 가능성이 있습니다.
만약 어느 사용자가 test<img src='' onerror='alert(document.cookie+location.href)'>.png 파일을 올렸다면 PHPSESSID 및 location 이 탈취되어 인증을 가로챌수 있습니다.
XSS 방지코드는 매우 번거롭기 때문에 index.php 의 79번째줄에
if (strpos($link, '<') !== false) continue;  를 추가하여 악성파일명의 표시를 건너뛰어서 해결하는 방법을 추천합니다.
프로그래머가 아니라 전문가가보면 부족한게 많습니다.
세션에 리소스 저장이 되던데 현재 페이지에만 되는걸 모르고 삽질하던 코드가 남아있습니다. ㄷㄷㄷ

5번은 그누보드 기능 쓰려고 작성했다가 수정을 안했나보네요.

감사합니다.
© SIRSOFT
현재 페이지 제일 처음으로