레이아웃 scripts[] 에만 있던 원격 스크립트 차단 게이트가 다른 주입 경로에는 없어, 저장측(SafeLayoutExpressions·NoExternalUrls)이 외부 URL 저장을 422 로 막아도 런타임 디스패치 한 번으로 임의 원격 코드가 로드됐다. 저장 검증이 통째로 무의미해지는 상태였고 오류도 경고도 남지 않았다. 판정식을 support/scriptSrcPolicy.ts 로 분리해 런타임 SSoT 를 하나로 두고, loadScript 액션 · 확장 핸들러 재로드 · 편집기 프리뷰 · 편집기 자산 매니페스트 · G7Core.asset.loadScript · PG 플러그인 SDK 주입이 모두 그것을 경유하게 했다. 사본을 두지 않은 이유는 차집합이 그대로 우회로가 되기 때문이다. - 게이트는 캐시 검사보다 앞에 둔다 (뒤에 두면 이미 로드된 미신뢰 스크립트가 캐시 히트로 통과한다) - NoExternalUrls 순회를 9키로 확대 — 번들 레이아웃 601개 사전 스캔으로 정당한 외부 URL 0건을 확인한 뒤 넓혔다 (저장 회귀 없음) - callExternal 은 생성자를 참조 동일성으로 거부하고(별칭 전역 포함), 프로토타입 경로 세그먼트를 읽기·매핑 키 양쪽에서 차단한다 - PG SDK 는 서비스 SDK 라 자체 호스팅이 불가능하므로 manifest 선언 + 주입 직전 호스트 확인이 게이트다. tosspayments SDK URL 은 확장자가 없어 정적 검사에 걸리지 않아 그 런타임 확인이 유일한 게이트다 - 함께 드러난 결함: 동시 loadScript 가 로드 전에 완료 처리되던 문제, 확장 재로드에서 script 기존재가 CSS 까지 건너뛰던 문제, loadCSS 의 in-flight 미공유
41 lines
1.3 KiB
JSON
41 lines
1.3 KiB
JSON
{
|
|
"identifier": "sirsoft-pay_nicepayments",
|
|
"vendor": "sirsoft",
|
|
"name": {
|
|
"ko": "나이스페이먼츠",
|
|
"en": "NicePayments"
|
|
},
|
|
"version": "1.0.3",
|
|
"license": "MIT",
|
|
"github_url": "https://github.com/gnuboard/g7-plugin-sirsoft-pay_nicepayments",
|
|
"github_changelog_url": "https://github.com/gnuboard/g7-plugin-sirsoft-pay_nicepayments/blob/main/CHANGELOG.md",
|
|
"description": {
|
|
"ko": "나이스페이먼츠 결제 게이트웨이 (통합결제창 연동)",
|
|
"en": "NicePayments gateway (integrated payment window)"
|
|
},
|
|
"g7_version": ">=7.0.10",
|
|
"dependencies": {
|
|
"modules": {
|
|
"sirsoft-ecommerce": ">=1.1.0"
|
|
},
|
|
"plugins": {}
|
|
},
|
|
"trusted_script_hosts": [
|
|
"web.nicepay.co.kr"
|
|
],
|
|
"trusted_script_hosts_reason": {
|
|
"web.nicepay.co.kr": "나이스페이먼츠 결제창 SDK 다. 스크립트가 나이스페이먼츠 서버와 통신하므로 자체 호스팅해도 결제가 성립하지 않는다."
|
|
},
|
|
"assets": {
|
|
"js": {
|
|
"entry": "resources/js/index.ts",
|
|
"output": "dist/js/plugin.iife.js"
|
|
},
|
|
"handlers": true
|
|
},
|
|
"loading": {
|
|
"strategy": "global",
|
|
"priority": 100
|
|
}
|
|
}
|