desenv-web-rp.com

Quais etapas devem ser tomadas para proteger o conteúdo inserido pelo usuário em um CMS?

Suponha que você esteja criando um CMS à prova de balas para sua empresa. Custo, tempo e tecnologia não são problema. Você tem desenvolvedores prontos para usar o conhecimento e a experiência para criar códigos excelentes.

Agora, você deve responder à antiga pergunta do CMS: quais etapas você toma para garantir que o código digitado no CMS pelo usuário seja aceitável para o seu site? Estou pensando além de apenas escapar tecnicamente de uma string para torná-la capaz de acessar um banco de dados - há considerações para os padrões w3, filtragem de conteúdo inapropriado, ortografia e enigmas como a limpeza de código do Microsoft Word. Certamente, há preocupações que eu perdi ...

3
bpeterson76

Eu acho que a pergunta aqui é:

"Como obtenho exatamente o que quero dos meus usuários, tornando a entrada absurdamente fácil para eles"

A única instância em que vejo usuários realmente precisando usar HTML diretamente em alguma forma de entrada é quando/se eles estão formatando dados tabulares. No entanto, nesse caso, é muito mais fácil fornecer a eles um formulário que possa fazer o mesmo ou qualquer uma das grades populares disponíveis em várias bibliotecas.

Acho que a regra de ouro, pelo menos para mim, é usar um sistema de marcação que não seja HTML, que seus manipuladores de formulários podem usar para criar um HTML bonito, compatível com os padrões e semanticamente correto.

Scanners de terceiros podem (normalmente) detectar a maioria dos problemas com os arquivos enviados. Pessoalmente, gosto do ClamAV - disponível para * nix e Windows.

Isso resolve o problema de garantir que tudo esteja bem organizado, formatado corretamente e que nada indesejável esteja sendo servido aos visitantes, ou está?

A outra coisa que você precisa fazer é revisar qualquer conteúdo que eles enviarem; um ser humano precisa ter alguma parte disso ou algo que vai ser perdido. Essa imagem é apropriada? Esse link leva a malware ou outra coisa com a qual você prefere não vincular? Etc.

O fornecimento de um mecanismo de sinalização ajuda, mas nem sempre é eficaz. Por exemplo, se você fornecer uma resposta para uma pergunta de dois anos no stackoverflow.com, a pergunta será enviada imediatamente para a primeira página em que a comunidade certamente revisará o que foi adicionado. Nem todos os sistemas são projetados com esse tipo de proteção em mente.

Se você faz uma quantidade significativa de volume no que diz respeito ao conteúdo contribuído pelo usuário, provavelmente vale a pena explorar usando contratados que simplesmente revisam os envios para garantir que mídias/links inadequados sejam eliminados rapidamente. Ou talvez você possa solicitar ajuda da sua comunidade de usuários (se houver) para fazer o mesmo, em troca de algum tipo de privilégio especial ou vantagens extras que os usuários normais não desfrutam.

1
Tim Post

Eu responderia isso girando mais para "Quais ferramentas eu preciso implementar", para que você possa começar a pensar em um conjunto de utilitários, ferramentas e plugins que você pode usar para implementar as salvaguardas.

Coisas como TinyMCE para entrada complexa, pois possui uma função 'colar do Word', ideal para eliminar muitos problemas de caracteres do Word.

Percebo que você diz "O código digitado no cms", então estamos falando de código real, e não de conteúdo? Como isso mudaria bastante o cenário do aplicativo na minha opinião.

Caso contrário, eu concordo com o comentário de jessegavin, pode haver muitas e muitas respostas para essa pergunta. Eu tenho que admitir, eu não entendo bem a pergunta como ela está. Como desenvolvedor, essas salvaguardas são coisas que eu codificaria de qualquer maneira ao criar o CMS.

Embora eu ache que muitas das salvaguardas possam ser cobertas na fase de design de Caso de Uso.

0
David Yell

Bem, se eu estivesse criando um CMS (e realmente o fiz), não me importaria com o conteúdo inserido nele, desde que esse conteúdo possa ser armazenado e recuperado. Não é tarefa de um sistema de gerenciamento de conteúdo adivinhar o que é aceitável e o que não é, pois varia de acordo com o uso.

Tudo que você precisa fazer é garantir que o conteúdo seja moderado (ou seja, passa por um processo de aprovação do fluxo de trabalho). É por isso que você tem editores de conteúdo, cuja tarefa é revisar o conteúdo digitado e decidir o que deve ser publicado, o que deve ser rejeitado e o que precisa ser resolvido. Embora seja relativamente fácil organizar o conteúdo do WYSIWYG programaticamente, é necessário que um ser humano decida realmente se o conteúdo é adequado para publicação.

Nunca permita que os usuários insiram conteúdo diretamente no seu site - sempre revise-o.

0
Dan Diplo