Best Practice: Legitimate Cross-Site Scripting

Embora o script entre sites seja geralmente considerado negativo, já encontrei várias situações em que é necessári

@I estava trabalhando recentemente dentro dos limites de um sistema de gerenciamento de conteúdo muito limitador. Eu precisava incluir o código do banco de dados na página, mas o servidor de hospedagem não tinha nada disponível. Configurei alguns scripts básicos no meu próprio servidor, originalmente pensando que eu poderia usar o AJAX para importar o conteúdo dos meus scripts diretamente para o modelo do CMS (mantendo imagens dinâmicas, itens de menu, CSS, etc.). Eu estava errado

Devido às limitações deXMLHttpRequest objects, não é possível capturar conteúdo de um domínio diferente. Então eu pensei iFrame - mesmo não sendo fã de quadros, pensei em criar um quadro que correspondesse à largura e altura do conteúdo para que parecesse nativo. Mais uma vez, fui bloqueado pelas "proteções" de script entre sites. Embora eu pudesse realmente carregar um arquivo remoto no iFrame, Não consegui executar o JavaScript para modificar seu tamanho na página do host ou dentro da página carregad

Nesse cenário específico, não consegui apontar um subdomínio para o meu servidor. Também não consegui criar um script no servidor CMS que pudesse proxy de conteúdo do meu servidor, então meu último pensamento foi usar um JavaScript remot

Um JavaScript remoto funciona. Ele é interrompido quando o usuário tem o JavaScript desativado, o que é uma desvantagem; mas funciona. O "problema" que eu estava tendo com o JavaScript remoto era que eu precisava usar a função JSdocument.write() para produzir qualquer conteúdo. Qualquer saída que não seja JS causa erros de script. Além de usardocument.write() para cada linha, você também deve garantir que o conteúdo seja escapado - ou você terá mais erros de scrip

minha solução foi a seguinte:

Meu script recebeu um parâmetro GET ("página") e procurou o arquivo {$page}.php) e leia o conteúdo em uma variável. No entanto, eu tive que usar técnicas de buffer estranhas para realmente executar os scripts incluídos (para coisas como interação com o banco de dados) e depois remover o conteúdo final de todos os caracteres de quebra de linha \n) seguido por escapar de todos os caracteres necessários. O resultado final é que meu script original (que gera JavaScript) acessa scripts aparentemente "padrão" no meu servidor e converte sua saída padrão em JavaScript para exibição no modelo CMS.

Embora esta solução funcione, parece que pode haver uma maneira melhor de realizar a mesma coisa. Qual é a melhor maneira de fazer o script entre sites funcionar especificamente com o objetivo de incluir conteúdo de um domínio completamente diferente?

questionAnswers(5)

yourAnswerToTheQuestion