Greasy Fork permite o uso de código externo em casos específicos. Qualquer código que estiver incluindo código externo fora do que é permitido está sujeito a ser deletado. Se você encontrar código violando essas regras, por favor denuncie.
Note que essas regras são aplicadas somente para códigos externos que sejam executáveis. Códigos não-executáveis como JSON ou CSS são permitidos.
Justificativa
Os scripts de usuário têm a capacidade técnica de carregar e executar outros scripts. Isso pode ser feito de algumas maneiras diferentes, inclusive:
- As chaves de metadados
@require
e@resource
. XmlHttpRequest
para baixar o script e, em seguida,eval
para executá-lo.- Adicionar a etiqueta
<script>
dinamicamente. - Opções
externas
de pacotes da Web. - Realizar uma atualização do script, seja automaticamente ou orientando o usuário a efetuar uma ação.
Embora esse seja um recurso útil e a maior parte dos autores de scripts o utilize para fins legítimos, ele também pode ser empregado de forma maliciosa. Um dos princípios fundamentais do Greasy Fork é que o usuário deve ser capaz de inspecionar o código em um script. Scripts externos podem contornar esse princípio de várias maneiras: eles podem mudar sem aviso ou registro, podem fornecer códigos diferentes para pessoas diferentes e podem ser utilizados para ocultar códigos mal-intencionados no meio de bibliotecas conhecidas. Mesmo que alguém verifique um script externo e determine que ele é legítimo, isso não garante que esse script sempre foi ou sempre seguirá sendo legítimo.
Códigos externos permitidos
A seguir estão os casos em que códigos externos são permitidos em Greasy Fork. Em outro caso, todas rules for code são aplicadas à códigos externos.
Redes de distribuição de conteúdo (CDNs)
Códigos de CDNs (Redes de distribuição de conteúdo) são permitidas. See a list of recognized CDNs. Esse código pode estar reduzido (minified), mas não ofuscado.
Códigos com chaves de integridade de sub recursos
O uso de @require
e @resource
com URLs com subresource integrity em Tampermonkey format é permitido.
Greasy Forkbibliotecas
Códigos publicados como bibliotecas em Greasy Fork são permitidas. Bibliotecas podem ser criadas escolhendo a opção ao criar um novo código. Também podem serem sincronizadas a partir de uma URL externa, como por exemplo um repositório no Github.
Injeção de códigos a partir do servidor de origem
A injeção de scripts externos do mesmo domínio é permitida. Se um script é executado em https://exemplo.com, e baixa https://exemplo.com/script.js, modifica e injeta de volta em https://exemplo.com/, isso é permitido.
Se https://exemplo.com/script.js é injetado em https://sitediferente.com, isso é proibido.