Greasy Fork는 특정 경우에 외부 코드 사용을 허용합니다. 허용된 범위를 벗어나 외부 코드를 포함하는 것으로 확인된 모든 스크립트는 삭제될 수 있습니다. 이러한 규칙을 위반하는 스크립트를 발견하면 신고해 주세요.
이 규칙은 실행 가능한 외부 코드에만 적용됩니다. JSON 또는 CSS와 같은 비실행 코드 로드는 제한되지 않습니다.
근거
유저 스크립트는 기술적으로 다른 스크립트를 로드하고 실행할 수 있습니다. 이는 다음과 같은 몇 가지 방법으로 수행될 수 있습니다:
@require
및@resource
메타데이터 키.XmlHttpRequest
를 사용하여 스크립트를 다운로드한 다음eval
로 실행.- 동적으로
태그 추가.
- Webpack의
externals
옵션. - 스크립트 업데이트 수행(자동으로 수행되거나 사용자가 작업을 수행하도록 안내).
이는 유용한 기능이며 대부분의 스크립트 작성자는 합법적인 목적으로 이를 사용하지만, 악의적으로 사용될 수도 있습니다. Greasy Fork의 핵심 원칙 중 하나는 사용자가 스크립트의 코드를 검사할 수 있어야 한다는 것입니다. 외부 스크립트는 경고나 기록 없이 변경될 수 있고, 다른 사람에게 다른 코드를 제공할 수 있으며, 알려진 라이브러리 중간에 악성 코드를 숨기는 데 사용될 수 있는 등 여러 가지 방법으로 이 원칙을 우회할 수 있습니다. 누군가 외부 스크립트를 확인하고 합법적이라고 판단하더라도, 해당 스크립트가 항상 합법적이었거나 앞으로도 그럴 것이라는 보장은 없습니다.
허용된 외부 코드
다음은 Greasy Fork에서 허용되는 외부 코드 사용 방법입니다. 달리 명시되지 않는 한, 다른 모든 코드 규칙이 외부 코드에 적용됩니다.
콘텐츠 전송 네트워크 (CDNs)
CDN의 코드는 허용됩니다. 인정된 CDN 목록 보기. 이 코드는 최소화될 수 있지만 난독화되어서는 안 됩니다.
하위 리소스 무결성 해시를 가진 스크립트
Tampermonkey 형식의 하위 리소스 무결성이 있는 URL과 함께 @require
및 @resource
사용은 허용됩니다.
Greasy Fork 라이브러리
Greasy Fork에 라이브러리로 게시된 스크립트는 허용됩니다. 라이브러리는 새 스크립트를 만들 때 옵션을 선택하여 생성할 수 있습니다. 이러한 라이브러리는 GitHub 저장소와 같은 외부 URL에서 동기화되도록 추가로 설정할 수 있습니다.
원본 호스트에서 스크립트 주입
외부 스크립트를 가져온 동일한 도메인에 주입하는 것은 허용됩니다. 스크립트가 https://example.com에서 실행되고 https://example.com/script.js를 다운로드하여 수정한 다음 https://example.com/에 다시 주입하는 경우 허용됩니다.
https://example.com/script.js가 https://differentsite.com에 주입되는 경우 허용되지 않습니다.