Heim  >  Artikel  >  Backend-Entwicklung  >  Kritische Fehler in der Webentwicklung

Kritische Fehler in der Webentwicklung

伊谢尔伦
伊谢尔伦Original
2016-12-01 09:11:141118Durchsuche

Dieser Artikel fasst einige wichtige Fehler zusammen, die PHP-Programmierer bei der Webentwicklung häufig übersehen, insbesondere bei mittleren und großen Projekten. Zu den typischen Fehlern gehört die Unfähigkeit, zwischen verschiedenen Entwicklungsumgebungen zu unterscheiden und die Nichtverwendung von Cache und Backup.

Im Folgenden wird PHP als Beispiel verwendet, seine Kernideen sind jedoch auf jeden Webprogrammierer anwendbar.

Fehler auf Anwendungsebene

1. Die Fehlerberichterstattung ist während der Entwicklungsphase deaktiviert

Kritische Fehler in der Webentwicklung

Das Einzige, was ich fragen möchte, ist: Warum? Warum sollten Sie die Fehlerberichterstattung während der Entwicklung deaktivieren?

PHP verfügt über viele Ebenen der Fehlerberichterstattung, und wir müssen sie alle während der Entwicklungsphase aktivieren.

Wenn Sie glauben, dass Fehler nicht passieren werden, dann idealisieren Sie das Programm. In der realen Welt sind Fehler unvermeidlich. error_reporting und display_error sind zwei völlig unterschiedliche Methoden. error_reporting() legt den Grad des Fehlers fest, während display_errors festlegt, ob die Fehlermeldung ausgegeben werden soll.

Während der Entwicklungsphase sollte die Fehlerberichtsebene auf die höchste Ebene eingestellt werden, beispielsweise die folgenden Einstellungen: error_reporting(E_ALL); und ini_set('display_errors', true);

2. Fehler überschwemmen

Im Gegensatz zum vorherigen Punkt übertönen viele Programmierer gerne Fehler. Sie wissen, dass Fehler passieren werden, aber Sie entscheiden sich dafür, sie zu verbergen, und dann können Sie früh nach Hause gehen und wenig tun Sie wissen, dass in Zukunft noch schwerwiegendere Fehler passieren werden.

3. Es gibt nirgendwo im Code ein Nutzungsprotokoll

Sie müssen das Nutzungsprotokoll zu Beginn der Softwareentwicklung im Auge behalten und können die Protokollfunktion erst am Ende nachholen des Projekts. Viele Programmierer verwenden die eine oder andere Methode zum Aufzeichnen von Protokollen, aber nur wenige Menschen können Protokolle tatsächlich zum Aufzeichnen abnormaler Informationen verwenden. Welchen Nutzen hat ein Protokollsystem, das niemand überprüft?

4. Es wird kein Cache verwendet

Im Anwendungssystem können wir Cache auf mehreren Systemebenen verwenden, z. B. auf der Serverseite, der Anwendungsseite und der Datenbankseite. Ebenso wie die Protokollierung sollte das Caching von Anfang an auf das System angewendet werden. Sie können das Caching während der Entwicklung deaktivieren und das Caching nach der Produktveröffentlichung aktivieren.

5. Best Practices und Designmuster aufgeben

Wie viele Menschen haben Sie gesehen, die ihre eigenen Passwortverschlüsselungsalgorithmen verwenden? Es tut mir leid, Ihnen sagen zu müssen, dass es viele davon gibt, weil sie denken, sie würden es besser wissen.

Die Best Practices und Designmuster wurden von Vorgängern erstellt, was oft einfacher und effektiver ist, als das Rad selbst neu zu erfinden. Wir Entwickler müssen diese Designmuster nur beherrschen und sinnvoll im Projekt anwenden können verwendet werden, beispielsweise einige Verschlüsselungsalgorithmen.

6. Es werden keine automatisierten Tests verwendet.

Tests werden in jedem Webprojekt verwendet, genau wie Protokolle. Wenn niemand sie verwaltet und verwendet, sind die Tests nutzlos.

Ein Testprojekt durchzuführen ist eine mühsame Aufgabe. Glücklicherweise gibt es eine Reihe von Tools, die uns dabei helfen, automatisierte Tests durchzuführen. In der PHP-Entwicklung gibt es ein gutes Testtool namens Jenkins, das sehr benutzerfreundlich ist.

7. Keine Codeüberprüfung

Die Arbeit in einem Team ist eine sehr große Herausforderung, da jedes Mitglied seine eigenen unterschiedlichen Arbeitsgewohnheiten und -methoden hat. Wenn es keine guten Spezifikationen gibt, wird die Projektentwicklung schwierig. Es wird viele Umwege erfordern.

Jedes Teammitglied sollte den Code des anderen überprüfen, genau wie Unit-Tests, was dazu beitragen kann, dass das Projekt sauberer und konsistenter wird.

8. Beim Programmieren werden nur Idealsituationen berücksichtigt

Sind Sie nach der Übergabe an den Kunden schon einmal auf Probleme oder gar Chaos im eigenen oder fremden Code gestoßen? Natürlich habe ich das nicht getan.

Diese Situation tritt häufig auf, weil Entwickler faul sind und nur ideale Situationen berücksichtigen, was zu Datenbankabstürzen, schwerwiegenden PHP-Fehlern oder sogar zu gehackten Servern führen kann. Beim Schreiben von Code müssen Programmierer nicht nur das Best-Case-Szenario berücksichtigen, sondern auch das Worst-Case-Szenario. Nur durch umfassendes Denken kann der Code alle Situationen abdecken.

9. Fehler bei der korrekten Anwendung objektorientierter Programmierideen

Die meisten PHP-Anfänger werden objektorientierte Ideen nicht in ihrem Code verwenden, da dieses Konzept am Anfang schwer zu verstehen ist.

Natürlich geht es beim objektorientierten Konzept nicht nur darum, einige Klassen gemeinsam zu organisieren.

Objekte, Eigenschaften, Methoden, Vererbung und Kapselung sind die grundlegendsten Konzepte in OOP. Nachdem Entwickler das objektorientierte Entwurfsmuster korrekt verwendet haben, können sie saubereren und skalierbareren Code schreiben.

10. „On-the-fly“-Programmierung

Die meisten Entwickler werden mit dieser Situation konfrontiert: „Schnell, der Kunde braucht eine neue Funktion, die so schnell wie möglich ausgeführt werden kann“, also fügen Sie einige Funktionen hinzu den Quellcode und laden Sie ihn dann direkt auf den laufenden Server hoch. Diese Programmiermethode wird als „On-the-fly“-Programmierung bezeichnet.

Wenn wir Software entwickeln, insbesondere mittlere und große Projekte, müssen wir den Arbeitsablauf für Analyse, Programmierung und Freigabe einhalten, wodurch Softwarefehler in Zukunft erheblich reduziert werden. Von diesem „Flugmodus“ ist abzuraten.

Fehler auf Datenbankebene

11. Fehler beim Lesen und Schreiben der Datenbank

Um ein komplexes System über einen langen Zeitraum zu betreiben, sollte jeder Programmierer die Zuverlässigkeit des berücksichtigen Durch die Skalierbarkeit des Systems muss in 99 % der Fälle keine Erweiterung in Betracht gezogen werden, da nicht so viel Datenverkehr anfällt.

Warum müssen wir das Lesen und Schreiben von Datenbanken trennen?

In jedem System wird die Datenbank der erste Engpass sein, der auftritt. Unter dem Einfluss von großem Datenverkehr wird die Datenbank wahrscheinlich als erstes sterben. Daher verwenden wir in den meisten Fällen mehrere Datenbanken, um den Datenverkehr zu verteilen, und Entwickler verwenden häufig das Master-Slave-Modell oder das Master-Master-Modell. Master-Slave ist der beliebteste Datenbankdruck-Sharing-Modus. Er leitet die angegebene Select-Anweisung an jeden Slave-Server weiter, sodass der Druck auf den Master-Server erheblich verringert wird.

12. Der Code kann nur eine Verbindung zu einer Datenbank herstellen

Dies ist dem vorherigen Fehler sehr ähnlich, aber Entwickler müssen aus bestimmten Gründen manchmal eine Verbindung zu mehreren Datenbanken herstellen -Ladedaten wie Protokolle, Aktivitätsinformationsströme und Echtzeit-Datenanalysen werden in verschiedenen Datenbanken abgelegt, um den Druck auf die Hauptdatenbank zu verringern.

13. Das Versäumnis, Datenbankschwachstellen zu erkennen

Wenn Sie Datenbankschwachstellen nicht erkennen, ist das so, als würden Sie den meisten Hackern die Tür zum Server öffnen.

Unter den vielen Schwachstellen sind Datenbankschwachstellen die anfälligsten, und die häufigste ist die SQL-Injection. Daher ist es weiterhin erforderlich, regelmäßig eine Datenbank-Schwachstellenerkennung durchzuführen.

14. Datentabellen haben keine Indizes

Indizes können die Leistung jeder Tabelle verbessern und wann man sie erstellt.

15. Es wird kein Transaktionsmechanismus verwendet

Datenintegrität ist für das Websystem sehr wichtig. Wenn ein Fehler in der Datenkonsistenz auftritt, bricht das gesamte System zusammen und ist schwer zu reparieren. Durch die ordnungsgemäße Verwendung des Datenbanktransaktionsmechanismus wird dieses Problem effektiv gelöst. Wenn Sie beispielsweise Benutzerdaten speichern möchten, befinden sich in Tabelle 1 E-Mail, Benutzername und Passwort sowie in Tabelle 2 Vorname, Nachname und Geschlecht. Wir können Transaktionen verwenden, um sicherzustellen, dass die Daten beim Aktualisieren von zwei Tabellen gleichzeitig oder nicht gleichzeitig aktualisiert werden.

16. Keine Verschlüsselung sensibler Daten

Wenn Sie vertrauliche Informationen in der Datenbank nicht oder mit einem einfachen Algorithmus verschlüsseln, werden Sie im Jahr 2014 auf jeden Fall auf Probleme stoßen Das Problem besteht darin, dass, sobald Hacker in Ihre Datenbank eindringen, das Passwort des Benutzers oder andere wichtige Informationen auf einen Blick sichtbar sind.

PHP5.5 bietet eine Hash-Verschlüsselungsmethode, die wie folgt verwendet wird:

$hash = password_hash( $password, PASSWORD_BCRYPT );

17. Kein Backup

Wenn Sie das Bild unten sehen, wenn Sie darauf stoßen Wenn Sie in einer solchen Situation kein Backup haben, ist alles vorbei.

18. Ohne Überwachung

Ohne Überwachung wissen Sie nicht, was als nächstes passieren wird. Sie sollten auf folgende Punkte achten:

Wie viele Personen können Direkter Zugriff auf diesen Anwendungsdienst?

Läuft der Server unter hoher Auslastung?

Müssen wir das System um einen weiteren Datenbankserver erweitern?

Wo liegt die Fehlerstelle des Bewerbungssystems?

Ist das System derzeit offline?


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn