Eu não podia acreditar que esta pergunta ainda não foi respondida neste site, mas não a encontrei quando procurei, então ...
Por que um crime contra a natureza é tão ruim para invadir o núcleo?
- É realmente ótimo poder atualizar sua versão principal? A maioria dos meus sites acaba tendo núcleos horrivelmente desatualizados, então por que se preocupar?
- Mesmo que seja tão ruim para os proprietários de sites, por que a comunidade se importa tanto? Por que é referido como "matar gatinhos"? Isso não é hiperbólico?
- O núcleo de hackers é tão fácil, não gostamos de seguir o caminho mais fácil para a solução de problemas?
- Não existem problemas que só podem ser resolvidos com o hacking core? O que então?
Respostas:
De um modo geral, existem três razões para não alterar o código principal do Drupal:
Suas alterações serão perdidas toda vez que você atualizar o Drupal, se você não tomar as etapas necessárias. Mesmo no caso de você criar um patch para a versão atual do Drupal em uso, o patch não pode ser aplicado à versão mais recente e você também precisará criar um patch para a nova versão.
As correções de segurança se aplicam ao núcleo do Drupal, conforme mantido no Drupal.org, mas não podem ser aplicadas à sua versão invadida. Isso significa que você deve verificar se sua versão não é afetada pelo problema de segurança levantado no núcleo do Drupal.
No caso de sua versão invadida apresentar um problema de segurança diferente, você é a única pessoa que o encontrará, pois não possui o suporte da equipe de segurança que investiga as falhas de segurança presentes no código principal do Drupal e em terceiros. módulos hospedados no Drupal.org.
As alterações introduzidas podem ser incompatíveis com o próprio Drupal, mas também com módulos de terceiros, necessários para trabalhar com o núcleo do Drupal, e não com qualquer versão invadida que possa ser criada.
Toda vez que o Drupal apresenta um novo recurso (que ainda acontece no Drupal 7 e no Drupal 6, embora com menos frequência), ou uma nova alteração na API, existe a chance de a versão invadida ser incompatível com as alterações recentes.
Dito isso, é possível criar uma versão invadida, mas essa não é a tarefa que um único desenvolvedor pode realizar, da mesma forma que o Drupal não é mantido por uma única pessoa. De fato, o Pressflow é uma versão hackeada do Drupal que foi criada com o desempenho em mente e para resolver alguns problemas de desempenho que um site do Drupal poderia ter.
Na maioria das vezes, é possível alterar os recursos / comportamento sem editar o código principal do Drupal. Sempre existe um gancho que permite alterar os recursos / comportamentos que o Drupal possui, e esse é o método preferido.
fonte
In the case your hacked version introduces a different security issue...
Não vejo isso como um argumento particularmente forte modificando um arquivo principal em comparação com qualquer outra coisa. Se eu não estiver invadindo o núcleo, e ao invés disso apresentar um problema de segurança por meio de um módulo, meu sistema ainda estará comprometido. O comprometimento está comprometido, realmente não importa se isso veio de mim editando um arquivo existente ou adicionando um novo.Eu poderia escrever uma resposta enorme aqui, mas vou postar este link: Nunca hackear o núcleo !
A principal razão que eu acho é que, se você cortar o núcleo para fazer algo que precisa, e atualizá-lo ... BANG! Suas alterações se foram. Perdido. Você pode tentar reverter o código do seu VCS, mas como não é possível reverter as atualizações do banco de dados a partir do núcleo do Drupal - você está tentando restaurar todo o código do VCS e depois restaurar os bancos de dados dos seus backups. Todo o tempo que você estiver tentando reverter seu código, provavelmente notará que seu último backup de banco de dados de pré-atualização falhou e jurará mais do que jamais jurou antes.
Além disso - o mais importante - se você cortar o núcleo, Dries e Webchick matam um gatinho: -o
fonte
"O que o núcleo de hackers não pode fazer por mim, o desenvolvedor?"
"O que o núcleo de hackers não pode fazer pelo meu cliente?"
"O que o núcleo de hackers não pode fazer pela minha comunidade?"
Todo mundo é um vencedor quando você não invade o núcleo!
fonte
Atualmente, estou trabalhando em um site principal hackeado. Tenho dificuldade em descobrir como algo tão simples quanto a fonte está sendo configurado. Também passo alguns dias consertando um bug que foi introduzido pelo hack do núcleo. Eu o encontrei pesquisando uma string em todo o código drupal.
Se você não segue a estrutura padrão de programação no drupal, como alguém pode encontrar e editar as alterações introduzidas? Isso é especialmente doloroso porque, no drupal, todos os arquivos php podem implementar um gancho. Tente descobrir qual deles está causando problemas.
fonte
Para responder a essa pergunta, sim, às vezes há problemas que você precisa superar, o que significa que você precisa invadir o núcleo (ou um módulo de contribuição).
Nesse caso, acredito que não há problema em invadir, desde que você coloque muitos comentários em seu código invadido e documente tudo o que mudar.
Por exemplo, para qualquer alteração no núcleo ou no contrib, eu crio um patch. Se for genérico e útil para outras pessoas, eu o envio ao drupal.org em uma edição, caso contrário, é para meu próprio uso.
Em seguida, submeto o arquivo de correção ao meu controle de versão, juntamente com a alteração do código.
Isso significa que eu posso ver procurando arquivos de correção se algo foi invadido.
Além disso, também adiciono uma lista de hacks à documentação do desenvolvedor do site (você realmente deve ter a documentação do desenvolvedor para o bem de outras pessoas que possam funcionar no site e para si mesmo quando inevitavelmente esquecer as coisas).
Nesta documentação sobre hacks, listo cada hack com o que o hack faz e por que, módulos / arquivos afetados, o nome do arquivo de correção que contém o código de hack e um link para um problema relacionado do drupal.org, se houver um (quase sempre no meu caso existe).
Então você e quem mais trabalha no site no futuro tem uma lista completa de hacks e não precisa se preocupar em quebrar acidentalmente algo com uma atualização.
Então, para o processo de atualização, verifico minha lista de hacks e dou uma olhada rápida nos arquivos de correção em todos os módulos que estou atualizando. Se houver um hack e houver um problema no drupal.org, eu verifico o problema para ver se a versão mais recente inclui o patch. Nesse caso, eu explodo o hack com a atualização e o removo da minha lista de hacks (faça Certifique-se de olhar para o drupal.org confirmar mensagens de que o que foi confirmado era o mesmo que a versão do patch que você está usando, ou pelo menos funcionalmente o mesmo).
Se o patch não foi confirmado, tudo o que tenho a fazer é atualizar os módulos e reaplicar os patches. Em muitos casos, os patches ainda serão aplicados de maneira limpa e o processo é fácil, mas às vezes é necessário rolar novamente os patches para a nova versão e, em seguida, confirmar a nova versão do patch no repositório local (juntamente com a publicação no site relevante). drupal.org, quando aplicável).
Outra coisa que gosto de fazer se tiver patches ou patches mais substanciais que interajam com a funcionalidade do núcleo de um módulo (ou apenas módulos personalizados que se estendem sobre o módulo drupal.org), é verificar as notas de versão do módulo atualizado ( isso significa toda a versão entre a versão atual e a versão para a qual você está atualizando) e verifique se não há nada que possa quebrar seu código. Nota: Atualmente, muitos mantenedores de módulos são bons em fornecer notas de versão completas, mas ainda existem muitas que fazem notas de versão de lixo. Nesse caso, em alguns casos, passo todas as mensagens de confirmação desde a minha versão atual (isso geralmente ocorre apenas nos casos em que tenho código complexo que interage profundamente com outro módulo). Nota:
Em seguida, após a atualização (em uma cópia de desenvolvimento do site), faça um teste completo. Você finalmente aprenderá o que significa completamente depois que alguns erros passarem.
Depois, quando tiver sido testado o suficiente, atualize o site ativo ou atualize suas atualizações locais ou qualquer que seja o processo de implantação.
A razão pela qual todo mundo diz que não faz isso, mesmo que seja mais fácil: porque a maioria das pessoas não tem um sistema como eu descrevi, então quando chega a hora de fazer atualizações ou o site é entregue a outra pessoa para trabalhar isso se torna um pesadelo e é necessário muito tempo (às vezes uma quantidade enorme de tempo) solucionando bugs, rastreando hacks e descobrindo por que eles estão lá, etc.
Se você herdar um site como esse, entenderá completamente :)
fonte
Se você ganha a vida instalando e criando sites do Drupal, é necessário mantê-los atualizados. Se a maioria dos sites acabar desatualizada, você não é profissional.
fonte