Kürzlich habe ich ein Programm gemacht. Ich habe vergessen, 2 Codezeilen zu löschen. Dieser Fehler kostete mich jeden Tag 800 Dollar pro Tag.
Ich habe mit PHP programmiert. Wenn ein Besucher einen Proxy verwendet, leitet er ihn an eine andere Stelle weiter. Die Verwendung des Debuggers war nicht möglich, da ein Teil des Codes ioncube enthält. Da das Programm einfach irgendwo anders umleitet, ist es schwer zu erkennen, welcher Teil des Codes ausgeführt wird.
Also habe ich überall eine Menge Debugging-Informationen veröffentlicht. Ich dachte, ich werde sie trotzdem löschen.
Der natürlichste Weg zum Debuggen besteht natürlich darin, Debugging-Informationen in eine Datei einzufügen. Das Problem ist, dass ich oft Proxy benutze. Nachdem ich das Programm geändert habe, muss ich die Textdatei häufig mit filezilla herunterladen. Oft zeigt die Textdatei nicht, was ich denke, dass es zeigen sollte. Schließlich habe ich beschlossen, nur Fehler im Web anzuzeigen.
Ich dachte über einen Debugging-Modus nach. Ich fürchte jedoch, ich werde vergessen, Debugging-Informationen zu löschen.
Ich habe überlegt, den Debugging-Modus zu verwenden, wenn der Benutzer beispielsweise? Debuggingmode = 1 ausführt. Ich war jedoch paranoid, dass mein Konkurrent das geheime Schlüsselwort irgendwie erraten kann.
Ich habe die meisten Debugging-Informationen gelöscht. Ich habe vergessen, einen zu löschen, und dieser wird nur angezeigt, wenn Benutzer einen Proxy aus dem richtigen Land verwenden. Es stellte sich heraus, dass ich keinen Vertreter aus dem richtigen Land habe und das nicht realisiert habe. Nachdem das Programm 24 Stunden lang funktioniert hat, habe ich es auf meine Hauptdomain hochgeladen.
Mein Konkurrent, der Proxy verwendet, sieht den Debugging-Code. Er kopiert die Idee und so habe ich 800 Dollar pro Tag verloren.
Rückblickend fällt es mir wirklich schwer zu sehen, wo ich falsch gelaufen bin. Ich war sehr vorsichtig. Trotzdem ist es passiert.
Wie sollte man eine PHP-Webanwendung sicher debuggen, ohne die Geheimnisse der Konkurrenz preiszugeben?