Ich konnte nicht glauben, dass diese Frage auf dieser Website noch nicht beantwortet wurde, aber ich habe sie bei der Suche nicht gefunden, also ...
Warum ist es eine so schlechte Idee, ein Verbrechen gegen die Natur zu begehen, um Core zu hacken?
- Ist es wirklich so toll, deine Kernversion upgraden zu können? Die meisten meiner Websites haben ohnehin schrecklich veraltete Kerne. Warum also die Mühe machen?
- Warum kümmert sich die Community so sehr um die Website-Eigentümer, auch wenn dies so schlecht für sie ist? Warum wird es als "Kätzchen töten" bezeichnet? Ist das nicht eher hyperbolisch?
- Der Hacking-Kern ist so einfach. Mögen wir es nicht, den einfacheren Weg zur Lösung eines Problems zu gehen?
- Gibt es keine Probleme, die nur durch Hacken des Kerns gelöst werden können? Was dann?
Antworten:
Grundsätzlich gibt es drei Gründe, den Drupal-Kerncode nicht zu ändern:
Ihre Änderungen gehen bei jedem Update von Drupal verloren, wenn Sie keine notwendigen Schritte unternehmen. Selbst wenn Sie einen Patch für die aktuelle Drupal-Version erstellen, die Sie verwenden, kann der Patch nicht auf die neuere Version angewendet werden, und Sie müssen auch einen Patch für die neue Version erstellen.
Sicherheitskorrekturen beziehen sich auf den Drupal-Kern, der auf Drupal.org verwaltet wird, konnten jedoch nicht auf Ihre gehackte Version angewendet werden. Das heißt, Sie sollten überprüfen, ob Ihre Version nicht von dem Sicherheitsproblem betroffen ist, das gegen den Drupal-Kern aufgeworfen wurde.
In dem Fall, dass Ihre gehackte Version ein anderes Sicherheitsproblem aufwirft, sind Sie die einzige Person, die es finden kann, da Sie nicht über die Unterstützung des Sicherheitsteams verfügen, das Sicherheitslücken im Drupal-Kerncode und in Drittanbietern untersucht Module auf Drupal.org gehostet.
Die von Ihnen eingeführten Änderungen sind möglicherweise nicht mit Drupal selbst kompatibel, aber auch mit Modulen von Drittanbietern, die für die Arbeit mit Drupal Core erforderlich sind, und nicht mit einer gehackten Version, die erstellt werden kann.
Jedes Mal, wenn Drupal eine neue Funktion einführt (was immer noch in Drupal 7 und Drupal 6 vorkommt, wenn auch mit geringerer Häufigkeit) oder eine neue API-Änderung, besteht die Möglichkeit, dass die gehackte Version mit den letzten Änderungen nicht kompatibel ist.
Das heißt, es ist möglich, eine gehackte Version zu erstellen, aber das ist nicht die Aufgabe, die ein einzelner Entwickler übernehmen kann, genauso wie Drupal nicht von einer einzelnen Person verwaltet wird. Tatsächlich ist Pressflow eine gehackte Version von Drupal, die mit Blick auf die Leistung erstellt wurde und um einige Leistungsprobleme zu lösen, die eine Drupal-Site haben könnte.
In den meisten Fällen ist es möglich, die Funktionen / das Verhalten zu ändern, ohne den Drupal-Kerncode zu bearbeiten. Es gibt immer einen Haken, mit dem sich die Funktionen / Verhaltensweisen von Drupal ändern lassen. Dies ist die bevorzugte Methode.
quelle
In the case your hacked version introduces a different security issue...
Ich sehe dies nicht als ein besonders starkes Argument, das eine Kerndatei im Vergleich zu irgendetwas anderem modifiziert. Wenn ich keinen Kern hacke und stattdessen ein Sicherheitsproblem über ein Modul einführe, ist mein System immer noch gefährdet. Kompromittiert ist kompromittiert, es spielt keine Rolle, ob ich eine vorhandene Datei bearbeite oder eine neue hinzufüge.Ich könnte hier eine massive Antwort schreiben, aber ich werde nur diesen Link posten: Niemals Kern hacken !
Der Hauptgrund, den ich vermute, ist, dass Sie, wenn Sie Core hacken, etwas tun müssen, und es dann aktualisieren ... BANG! Ihre Änderungen sind weg. Hat verloren. Sie könnten dann versuchen, den Code von Ihrem VCS zurückzusetzen, aber da Sie Datenbank-Upgrades von Drupal Core nicht zurücksetzen können, möchten Sie den gesamten Code von VCS wiederherstellen und anschließend Datenbanken von Ihren Sicherungen wiederherstellen. Während Sie versuchen, Ihren Code zurückzusetzen, werden Sie wahrscheinlich feststellen, dass Ihre letzte Sicherung der Datenbank vor dem Update fehlgeschlagen ist, und Sie werden mehr schwören als jemals zuvor.
Und - was am wichtigsten ist - wenn Sie Core hacken, töten Dries und Webchick beide ein Kätzchen: -o
quelle
"Was kann kein Hacking Core für mich tun, der Entwickler?"
"Was kann kein Hacking Core für meinen Client tun?"
"Was kann kein Hacking Core für meine Community tun?"
Jeder ist ein Gewinner, wenn Sie nicht Kern hacken!
quelle
Ich arbeite derzeit an einer gehackten Core-Website. Ich habe Schwierigkeiten herauszufinden, wie etwas so Einfaches wie Schriftart eingerichtet wird. Ich habe auch ein paar Tage damit verbracht, einen Fehler zu beheben, der durch den Core-Hack verursacht wurde. Ich habe es gefunden, indem ich nach einer Zeichenfolge im gesamten Drupal-Code gesucht habe.
Wenn Sie die Standardstruktur der Programmierung in Drupal nicht befolgen, wie kann dann jemand anders die von Ihnen eingeführten Änderungen finden und bearbeiten? Dies ist besonders schmerzhaft, da in Drupal jede einzelne PHP-Datei einen Hook implementieren kann. Versuchen Sie herauszufinden, welches Problem verursacht.
quelle
Um diese Frage zu beantworten, gibt es manchmal Probleme, die Sie überwinden müssen und die bedeuten, dass Sie den Kern (oder ein Contrib-Modul) hacken müssen.
In diesem Fall halte ich es für in Ordnung, zu hacken, solange Sie viele Kommentare in Ihren gehackten Code einfügen und alles dokumentieren, was Sie ändern.
Beispielsweise erstelle ich für jede Kern- oder Beitragsänderung, die ich vornehme, einen Patch. Wenn es allgemein und für andere nützlich ist, sende ich es in einer Ausgabe an drupal.org, ansonsten ist es für meinen eigenen Gebrauch.
Anschließend übergebe ich die Patch-Datei zusammen mit der Codeänderung an meine Versionskontrolle.
Dies bedeutet, dass ich nach Patch-Dateien suchen kann, wenn etwas gehackt wurde.
Darüber hinaus füge ich der Entwicklerdokumentation für die Site eine Liste von Hacks hinzu (Sie sollten wirklich Entwicklerdokumentation haben, um anderen zu helfen, die auf der Site funktionieren könnten, und um sich selbst zu helfen, wenn Sie unvermeidlich Dinge vergessen).
In dieser Hack-Dokumentation liste ich jeden Hack mit der Funktion und dem Grund des Hacks, den betroffenen Modulen / Dateien, dem Namen der Patch-Datei, die den Hack-Code enthält, und einem Link zu einem verwandten drupal.org-Problem auf (fast immer) in meinem Fall gibt es).
Dann haben Sie und alle anderen, die in Zukunft auf der Website arbeiten, eine vollständige Liste von Hacks und müssen sich keine Sorgen machen, dass Sie versehentlich mit einem Update etwas kaputtmachen.
Dann überprüfe ich für den Update-Vorgang meine Liste der Hacks und suche schnell nach Patch-Dateien in allen Modulen, die ich aktualisiere. Wenn es einen Hack gibt und es ein Problem mit drupal.org gibt, überprüfe ich das Problem, um festzustellen, ob der Patch in der neuesten Version enthalten ist. In diesem Fall blase ich den Hack mit dem Update weg und entferne ihn aus meiner Liste der Hacks (make) Wenn Sie sich die Commit-Nachrichten von drupal.org ansehen, stellen Sie sicher, dass das Commit mit der Version des von Ihnen verwendeten Patches übereinstimmt oder zumindest funktional identisch ist.
Wenn der Patch nicht festgeschrieben wurde, muss ich nur die Module aktualisieren und die Patches erneut anwenden. In vielen Fällen werden die Patches immer noch sauber angewendet und der Vorgang ist einfach. Manchmal müssen Sie jedoch die Patches für die neue Version erneut ausführen und dann die neue Version des Patches in Ihr lokales Repository übertragen (zusammen mit dem Veröffentlichen im relevanten Repository) drupal.org (falls zutreffend).
Eine andere Sache, die ich gerne mache, wenn ich umfangreichere Patches oder Patches habe, die mit der Kernfunktionalität eines Moduls interagieren (oder nur benutzerdefinierte Module, die sich über ein drupal.org-Modul erstrecken), ist das Überprüfen der Versionshinweise des aktualisierten Moduls ( Das bedeutet, dass sich alle Versionen zwischen Ihrer aktuellen Version und der Version befinden, auf die Sie aktualisieren.) Stellen Sie sicher, dass sich nichts befindet, das Ihren Code beschädigen könnte. Hinweis: Viele Modulbetreuer sind heutzutage gut darin, vollständige Versionshinweise zu geben, aber es gibt immer noch viele, die Versionshinweise in den Müll werfen. In diesem Fall gehe ich in einigen Fällen alle Commit-Nachrichten seit meiner aktuellen Version durch (dies ist normalerweise nur in Fällen der Fall, in denen ich komplexen Code habe, der tief mit einem anderen Modul interagiert). Hinweis:
Testen Sie dann nach der Aktualisierung (auf einer Entwicklungskopie der Site) gründlich. Sie werden schließlich erfahren, was gründlich bedeutet, nachdem ein paar Bugs durchgesickert sind.
Wenn es ausreichend getestet wurde, aktualisieren Sie die Live-Site oder übertragen Sie Ihre lokalen Updates oder was auch immer Ihr Bereitstellungsprozess sein mag.
Der Grund, warum jeder sagt, mach es nicht, auch wenn es einfacher ist: Weil die meisten Leute kein System haben, wie ich es skizziert habe, wenn es darum geht, Updates zu machen, oder die Site jemand anderem zur Arbeit übergeben wird dann wird es ein Albtraum und es muss viel Zeit (manchmal sehr viel Zeit) aufgewendet werden, um Fehler zu beheben, Hacks aufzuspüren und herauszufinden, warum sie da sind usw.
Wenn Sie jemals eine solche Site geerbt haben, werden Sie es verstehen :)
quelle
Wenn Sie davon leben, Drupal-Websites zu installieren und zu erstellen, müssen Sie diese auf dem neuesten Stand halten. Wenn die meisten Ihrer Websites schrecklich veraltet sind, sind Sie kein Profi.
quelle