리버티게임:스크립트 지침

리버티게임, 모두가 만들어가는 자유로운 게임
Hsl0 (토론 | 기여)님의 2024년 12월 24일 (화) 03:42 판 (→‎제한)
Ideology Icon.png
이 문서는 리버티게임의 정책이나 지침 등으로 제안된 상태입니다.
제안 내용은 더욱 추가·보충·수정될 수 있으며, 제안된 내용은 토론란에서 공식적인 채택을 위한 총의를 모으는 과정 중에 있습니다. 이 문서를 참조하거나 링크할 때에는 정책이나 지침이라고 기술하지 않아야 합니다.


스크립트는 사용자의 브라우저에서 작동하는 자바스크립트 프로그램입니다. 이 문서는 관리자가 전역 스크립트나 소도구를 승인하여 사이트 전체에 배포할 수 있는 스크립트와 차단할 수 있는 스크립트의 기준을 제시합니다.

스크립트를 적절히 활용하면 수준 높은 게임을 만들 수 있고, 이러한 게임을 쉽게 만들 수 있도록 돕는 도구를 만들 수도 있습니다. 하지만 스크립트를 실행한 사용자를 자동 반달 봇으로도 만들 수 있는 위험한 물건이기도 합니다. 따라서 다른 사용자가 만든 스크립트를 등록하거나 실행할 때는 큰 주의가 필요합니다.

이 지침은 플러그인의 등장 이후 암묵적으로 확립된 관행을 명문화하여 아무도 승인하지 않은 악성 스크립트가 우회적으로 실행되는 보안 취약점을 차단하고, 저질 스크립트로 사이트의 보안이나 사용자 경험이 저하되는 것을 예방하며, 스크립트에 직접적으로 영향을 받는 사용자가 스스로 스크립트를 통제할 수 있도록 충분한 정보를 제공받고 선택권을 보장받을 것을 목적으로 합니다.

종류

리버티게임에서 사용되는 스크립트의 종류는 다음과 같습니다.

  • 관리자가 승인하는 스크립트
  • 사용자가 승인하는 스크립트
  • 사용자가 작성한 스크립트
  • 그 외 다른 스크립트에서 호출되는 자바스크립트 코드

승인

관리자의 사전 승인을 받거나, 스크립트를 실행하는 사용자의 동의를 받은 스크립트만 실행될 수 있습니다. 사용자가 스스로 작성하여 직접 실행하는 사용자 스크립트에는 동의 절차가 필요하지 않습니다.

다음에 동의 없이 실행할 수 있다는 점을 명시하여 함께 동의를 받으면 코드가 바뀌지 않았을 때 동의 없이 다시 실행할 수 있습니다. 단, 동의는 철회할 수 있어야 합니다.

사용자가 스크립트를 동의할 때 코드의 의미를 알 수 있어야 하고 난독화되어서는 안됩니다. 단, DOM 수정이 가능한 영역이 제한되고 개별적인 동의가 필요한 기능이 차단된 샌드박스 환경에서 작동되는 스크립트는 해당하지 않습니다.

스크립트가 사용자의 동의를 받을 때 다음 기능을 사용한다면 이를 명시해야 합니다.

  • 문서 편집
  • DOM 요소 수정
  • 미디어위키 사용자 설정 변경
  • 외부 사이트와의 통신

다음 기능을 사용할 때 개별적인 동의가 필요하며 해당 기능이 사용됐음을 사용자가 인지할 수 있어야 합니다. 단, 동의는 철회할 수 있어야 합니다.

  • 문서 편집
  • 미디어위키 사용자 설정 변경
  • 외부 페이지로의 이동
  • 외부 사이트와의 통신

자동 문서 편집

특정 템플릿을 이용하여 동일한 문서를 편집하는 경우, 다음에 동의 없이 편집할 수 있다는 점을 명시하여 한번 동의를 받으면 그 이후에는 동의 없이 동일한 템플릿으로 문서를 편집할 수 있습니다. 단, 동의는 철회할 수 있어야 합니다.

지금 바로 문서를 편집하지 않더라도 나중에 동일한 템플릿을 이용해서 편집할 가능성이 있는 문서 목록이나 문서 제목의 패턴을 제시하여 일괄적으로 동의를 받을 수 있습니다.

자동으로 문서를 편집하면 사용자에게 편집한 문서와 수정내역을 즉시 알려줘야 합니다. 수정내역은 확인할 수 있는 링크나 버튼을 넣으면 알려준 것으로 간주합니다.

미디어위키 사용자 설정 변경

미디어위키 API의 options 기능을 통해 사용자 설정을 변경할 때마다 어떻게 설정이 바뀌는지 사용자에게 알려주고 동의를 얻어야 합니다. 단, userjs- 접두어를 사용해 스크립트 자기 자신의 설정이나 데이터를 변경할 때는 필요하지 않습니다.

외부 사이트와의 통신

외부 사이트와 데이터를 주고받으려면 도메인별로 사전에 동의를 받아야 합니다. 다음에 동의 없이 통신할 수 있다는 점을 명시하여 한번 동의를 받으면 그 이후에는 동일한 도메인과 동의 없이 통신이 가능합니다. 단, 동의는 철회할 수 있어야 합니다.

외부 페이지로의 이동

사용자 개입 없이 자동으로 외부 사이트로 리다이렉트 될 수 없습니다. 목적지 URL을 사용자가 확인할 수 있게 리다이렉트 여부를 사용자에게 물어야 합니다.

링크를 통해 이동하는 경우, 링크에 외부 링크라는 표시가 있고 커서를 댔을 때 목적지 URL을 확인할 수 있다면 링크 클릭을 사용자의 동의로 간주합니다. 인터위키에 등록된 사이트는 외부 링크 표시를 생략할 수 있습니다.

제한

다음과 같은 문제가 있는 스크립트는 관리자의 재량에 따라 승인을 거부하거나 실행되지 못하게 삭제 등의 조치를 할 수 있습니다. 단, 그 이유는 명시해야 합니다.

  • 취약점이 있거나 악용의 우려가 있는 스크립트
  • 다른 스크립트와 충돌하는 HTML ID/클래스, 로컬 저장소, 미디어위키 사용자 옵션 키를 사용한 스크립트
  • 사이트의 성능을 현저하게 저하시키거나, 저하시킬 우려가 있는 방식으로 구현된 스크립트
  • 민감한 정보를 외부로 유출할 수 있는 스크립트
  • 의도와 맞지 않게 다른 기능의 사용을 방해하는 스크립트

사용자가 이미 동의한 경우라도, 문제가 되는 스크립트는 관리자가 사후에 실행을 차단할 수 있어야 합니다.

권장사항

다음은 반드시 준수될 필요는 없으나, 문제가 될 경우 관리자의 재량에 따라 승인을 거부하거나 실행을 차단할 수 있는 사유가 됩니다.

  • 다른 스크립트에서 사용하는 함수나 이벤트, 설정은 가급적 수정하지 않아야 합니다.
  • 가급적 사이트 외부와 데이터를 주고받지 않아야 합니다.
  • 주요 브라우저(크롬, 파이어폭스, 사파리)의 정식 출시된 최신버전에서 정상적으로 작동되어야 합니다.