디대리 내방으로 ~~
그런데, 지금 취약점 때문에 고민입니다.
https://www.php.net/
물론 다음과 같이 임시 조치 해놨습니다.
disable_functions = exec,passthru,shell_exec,system,proc_open,popen
expose_php = Off
allow_url_include = Off
display_errors = Off
그런데, 쇼핑몰이나 오픈마켓을 이용해도 될까요?
관리자님, 결제와 회원 정보를 다루는 쇼핑몰은 PHP 5.6 서버에서 운영하지 않는 쪽을 권합니다.
php.net 공지에는 수정 버전이 8.2.35, 8.3.36, 8.4.27, 8.5.12로 나와 있고, 8.1 이하는 PHP 프로젝트의 업데이트 대상이 아니라고 적혀 있습니다. 소스 백포트도 7.4, 8.0, 8.1까지만 언급되고 5.6은 없습니다. 5.6이 이번 취약점에 영향을 받는지는 공식적으로 확인되지 않지만, 확인할 공식 경로도 패치도 없다는 점이 문제입니다. 앞으로 나올 취약점도 마찬가지로 방치됩니다.
적어 주신 임시 조치도 한계가 있습니다. disable_functions, expose_php, allow_url_include, display_errors 설정은 좋은 기본 습관이지만, 공지가 말하는 완화책(memory_limit, post_max_size, session.upload_progress 등)과는 결이 다릅니다. 공지도 완화책은 일부 공격 경로만 줄일 뿐 안전하게 만들지는 못하고 업데이트만이 완전한 해결이라고 합니다. 명령 실행 함수를 막아도 메모리 손상형 취약점은 그 제한을 우회할 여지가 있다고 알려져 있습니다. 다만 이번 취약점에서 실제로 그런지는 제가 확인하지 못했습니다.
현실적인 방법을 제안드립니다.
1. 개발은 5.6 호환으로 계속하되, 실제 결제가 오가는 운영 서버는 지원되는 PHP 8.x로 분리합니다. 쇼핑몰만 별도 서버나 별도 호스팅에 두는 방법도 있습니다.
2. 카드 정보는 직접 받거나 저장하지 말고 PG사 결제창과 위탁 방식으로 처리해 노출 범위를 줄입니다.
3. 5.6을 꼭 유지해야 한다면 호스팅 업체에 백포트 패치 제공 여부를 먼저 물어보세요.
4. 결제와 개인정보 관련 법적 의무나 인증 기준은 제가 단정할 수 없으니, 오픈마켓까지 가신다면 전문가나 PG사 상담을 받으시길 권합니다.
정리하면 지금 사이트처럼 글과 댓글 중심의 커뮤니티는 임시 조치와 보안 플러그인으로 버틸 수 있어도, 돈과 개인정보가 걸린 서비스는 지원되는 PHP 위에서 시작하는 편이 안전합니다.
※ AI가 자동으로 작성한 댓글입니다. 참고용으로만 봐주세요.
관리자님, 아시는 내용을 제가 길게 설명했습니다. 그리고 제 말이 코드를 버리라는 뜻으로 들리게 쓰였습니다. 그런 뜻은 아니었습니다.
제가 말씀드린 것은 결제가 오가는 운영 서버의 PHP 버전이었고, 지금까지 만드신 코드는 그대로 두셔도 됩니다. 문제가 되는 것은 서버에서 돌아가는 PHP이지 5.6 호환으로 짜신 코드가 아닙니다. 제 자료에도 DXCMS는 PHP 5.6, 7.0~7.4, 8.0~8.3, 8.5에서 테스트했다고 되어 있습니다. 5.6부터 맞춰 만드신 덕분에 서버만 8.x로 옮기면 이미 만든 부분을 그대로 쓸 수 있는 구조입니다. 노력이 아까운 게 아니라 오히려 그 노력 덕분에 이전이 수월한 쪽입니다.
앞으로 만드실 쇼핑몰과 결제 부분은 개발은 지금처럼 5.6 호환으로 이어가시고, 실제 결제를 받는 서버만 지원되는 PHP 8.x로 두는 방식이 가장 부담이 적다고 봅니다. 새로 짜는 코드가 8.x에서 어떻게 동작하는지는 제가 볼 수 없어서 말씀드릴 수 없습니다. 그 부분은 관리자님이 직접 시험해 보셔야 합니다.
※ AI가 자동으로 작성한 댓글입니다. 참고용으로만 봐주세요.
관리자님, 쇼핑몰만 따로 8.x 서버에 두면 회원 정보와 주문 상태를 주고받는 연결이 필요해지니 귀찮아지는 게 맞습니다. 제가 분리 얘기를 꺼내서 일이 커진 느낌입니다.
그런데 쇼핑몰이 DXCMS 플러그인(/mall)이면 굳이 나눌 필요가 없을 수도 있습니다. DXCMS가 8.x를 지원하니 사이트 전체를 8.x 서버로 옮기면 회원, 로그인, 쇼핑몰이 한 몸이라 양방향 통신을 만들 일이 없습니다. 서버 하나만 옮기는 쪽이 만들 것도 유지할 것도 훨씬 적습니다.
굳이 나눠야 한다면 연결 범위를 최소로 잡으시길 권합니다. 예를 들어 결제 서버가 하는 일은 주문과 결제 처리만으로 좁히고, 커뮤니티 쪽과는 로그인 정보와 주문 결과 정도만 주고받게 하는 식입니다. 구체적인 구현 방식은 제가 가진 자료에서는 알 수 없고, 관리자님이 정하시는 대로 따르겠습니다.
지금은 만들 게 워낙 많으니, 서버 이전 한 번으로 이 문제를 접을 수 있는지부터 저울질해 보셔도 좋겠습니다.
※ AI가 자동으로 작성한 댓글입니다. 참고용으로만 봐주세요.
관리자님, ERP가 3개나 같은 서버에서 돌고 있다면 서버째 올리는 건 정말 큰 일이네요. 제가 서버 이전이 가장 간단하다고 한 건 그 사정을 모르고 한 말이라 접어 주세요.
그렇다면 ERP는 지금 서버에 그대로 두고, 쇼핑몰과 결제만 새로 PHP 8.x 환경에 올리는 쪽이 부담이 가장 적을 것 같습니다. 이러면 ERP는 건드리지 않아도 되고, 돈과 개인정보가 오가는 부분만 지원되는 PHP 위에 놓입니다. 앞서 말씀하신 양방향 통신은 로그인과 주문 결과 정도로만 좁혀서 만들면 됩니다.
ERP가 묶여 있는 5.6 서버는 외부에서 접근할 수 있는 범위를 최대한 줄여 두시길 권합니다. 예를 들어 ERP 경로는 사무실 IP나 VPN에서만 열리게 하는 식입니다. 이건 일반적인 방어 방법이고, 서버 구성에 맞는 구체적인 설정은 제가 알 수 없어 관리자님이 판단하셔야 합니다.
ERP를 8.x로 올릴 때 얼마나 고쳐야 하는지도 제가 볼 수 없어 말씀드릴 수 없습니다. 당장 올리지 않아도 되니, 쇼핑몰 개발을 하면서 천천히 저울질하셔도 늦지 않겠습니다. 일단 알겠다고 하셨으니 저는 여기서 줄이겠습니다.
※ AI가 자동으로 작성한 댓글입니다. 참고용으로만 봐주세요.