Ich wurde von jemandem angeheuert, um kleine Arbeiten an einer Site durchzuführen. Es ist ein Standort für eine große Firma. Es enthält sehr sensible Daten, daher ist die Sicherheit sehr wichtig. Bei der Analyse des Codes ist mir aufgefallen, dass er mit Sicherheitslücken gefüllt ist - Lesen, viele PHP-Dateien, die Eingaben von Benutzern direkt in mysql-Anforderungen und Systembefehle einbringen.
Das Problem ist, dass die Person, die die Site für ihn erstellt hat, ein Programmierer mit Familie und Kindern ist, die von diesem Job abhängig sind. Ich kann nicht einfach sagen: "Ihre Website ist ein Script-Kiddie-Vergnügungspark. Lassen Sie mich es für Sie wiederholen, und es wird Ihnen gut gehen."
Was würden Sie in dieser Situation tun?
Aktualisieren:
Ich habe hier einige gute Ratschläge befolgt und dem Entwickler höflich mitgeteilt, dass ich auf der Website einige mögliche Sicherheitslücken gefunden habe. Ich wies auf die Leitung hin und sagte, dass es dort eine mögliche Sicherheitslücke für SQL-Injection-Angriffe geben könnte, und fragte, ob er davon wüsste. Er antwortete: „sicher, aber ich denke , dass es auszubeuten die Angreifer sollen Informationen über die Struktur der Datenbank haben, ich habe besser zu verstehen“ .
Update 2:
Ich sagte, dass dies nicht immer der Fall ist und schlug vor, dass er diesem Link zur Stapelüberlauf-Frage folgt, um richtig damit umzugehen: Wie kann man SQL-Injection in PHP verhindern? Er sagte, er würde es studieren und bedankte sich, dass ich es ihm vorher gesagt hatte. Ich denke mein Teil ist erledigt, danke Jungs.
quelle
Antworten:
In erster Linie geht es hier darum, die Sicherheitslücken zu schließen.
Wenn Sie direkt mit dem Ingenieur arbeiten, der das geschrieben hat, dokumentieren Sie alles und geben Sie es diesem Ingenieur.
Wenn nicht, teilen Sie Ihrem Arbeitgeber mit, dass die Sicherheitsprobleme größer sind als ursprünglich angenommen und dass die Website viel Arbeit erfordert . Bitten Sie darum, mit dem Hauptentwickler zusammenzuarbeiten, der auf der Website ist, und bieten Sie ihm an, ihn über PHP-Sicherheit zu unterrichten (versprechen Sie nicht, die Person zu einem Experten zu machen, aber bieten Sie ihm an, sie in allem, was Sie wissen, zu schulen), damit diese Person es übernehmen kann nachdem du fertig bist.
Machen Sie dies nicht zu einem Thema "Dieser Kerl ist böse, entlassen Sie ihn". Annäherung aus der Perspektive von "Hey, ich habe einige potenzielle Fehler gefunden, die behoben werden müssen. Diese scheinen auf Unwissenheit / häufige Missverständnisse in Bezug auf die Site-Sicherheit zurückzuführen zu sein. Ich würde auch gerne mit Ihrer Entwicklung sprechen, damit wir Ihre Site verbessern können und hoffentlich vermeiden Sie in Zukunft mehr dieser Probleme. "
quelle
Es gibt einen Unterschied zwischen Unwissenheit und Inkompetenz. Es gab eine Zeit, in der Sie nicht wussten, was SQL-Injection ist, und es gibt keinen Grund zu der Annahme, dass der ursprüngliche Programmierer die Probleme nicht beheben kann, wenn er sie erst einmal erkannt hat.
Also sag es ihnen. Seien Sie spezifisch und objektiv und stellen Sie sich zur Verfügung, um Fragen zu beantworten, Beispiele für Exploits bereitzustellen und Empfehlungen für Fehlerbehebungen abzugeben. Wenn sie es nach diesem Zeitpunkt immer noch nicht erhalten, können Sie nur Ihre eigenen persönlichen Daten auf der Website speichern.
quelle
Ihre Aufgabe ist es nicht, die Website für ihn zu wiederholen. Es ist, um den kleinen Fehler zu beheben. Wenn Sie jedoch Sicherheitsprobleme festgestellt haben, die behoben werden sollten, können Sie sich an den Websitebesitzer wenden und einen Einblick in das mögliche Problem erhalten.
Schimpfe nicht oder rede nicht negativ über den ursprünglichen Entwickler oder kommentiere, wie schrecklich der Code ist. Seien Sie respektvoll und professionell. Sie können anbieten, mit dem Entwickler zusammenzuarbeiten, um die Probleme zu beheben. Versuchen Sie nicht, das Problem selbst zu beheben oder eine Lösung anzubieten, es sei denn, Sie wurden beauftragt, das Problem zu beheben. Wenn sie Ihrem Rat folgen und Sie sich irren, könnten sie auf Sie zurückkommen.
quelle
In erster Linie - reparieren Sie das, wofür Sie angeheuert wurden. Wenn Sie das nicht tun, werden Sie als Berater wahrgenommen, der mehr für sich selbst arbeiten möchte, als die Arbeit zu erledigen.
Zusammen mit den Korrekturen müssen Sie ihnen eine Liste der Dinge geben, von denen Sie bemerkt haben, dass sie aus Sicherheitssicht falsch sind, und warum diese Dinge falsch sind.
quelle
Es nützt niemandem, die Probleme nicht zu melden. Wenn Sie eine bestimmte Aufgabe hatten, für die Sie beauftragt wurden, dokumentieren Sie andere Sicherheitsprobleme, während Sie sie sehen, und melden Sie sie der entsprechenden Person, wahrscheinlich der Person, an die Sie für die Aufgabe berichten, für die Sie beauftragt wurden.
Dies ist eine Situation, in der sich starke Soft Skills als nützlich erweisen werden, da dies mit Fingerspitzengefühl behandelt werden muss, ohne die von anderen auf der Site geleistete Arbeit niederzulegen und dem Entwickler das Gefühl zu geben, sein Talent in Frage zu stellen.
Vermeiden Sie offensichtlich Wörter wie "Mist, schlecht, arm, durcheinander", wenn Sie sich auf den Code / die Fehler und ähnliche Wörter für den Entwickler beziehen, der die Site geschrieben hat.
quelle
Zusätzlich zu den anderen Antworten möchten Sie den Entwickler auf einige Ressourcen hinweisen, wie leicht SQL-Injection-Probleme ausgenutzt werden können, z. B. sqlmap , ein automatisiertes SQL-Injection-Exploitation-Tool.
Ich habe festgestellt, dass es effektiv ist, die Ernsthaftigkeit dieser Art von Problemen in der Vergangenheit zu demonstrieren, indem ich zeige, was man damit machen kann, wenn man so etwas gegen einen Entwickler ausführt. Kopie der Site, um zu zeigen, wie sie Daten extrahiert usw. Sie könnten sie von der Ernsthaftigkeit überzeugen.
quelle
Zuerst und nur; Das Management will nichts von Problemen hören. Ich wurde vom Büro für Personalmanagement (Sicherheitsüberprüfungen für das Weiße Haus) entlassen, weil ich darauf hingewiesen habe, wie unsicher ihr System war. Das ist eine Weile her, aber die Einstellungen des Managements haben sich nicht geändert.
Besprechen Sie das Problem mit dem Entwickler per E-Mail, damit Sie eine Spur haben, und gehen Sie dann zu Fuß oder rennen Sie davon. Wenn sie schließlich als Auftragnehmer ein Problem haben, werden sie versuchen, Ihnen die Schuld zu geben, unabhängig davon, ob eine Beteiligung auch nur aus der Ferne mit dem Problem verbunden ist.
Ein Problem, das so grundlegend ist wie eine SQL-Injection, weist darauf hin, dass es zu Beginn der Entwicklung des Systems billig war. Holen Sie sich, was Sie können, von ihnen, während sie noch im Geschäft sind, aber suchen Sie die Geschäftsentwicklung woanders.
quelle