2 Stimmen

PHP - Rahmenwerke, ORM, Kapselung

Programmiersprachen/Umgebungen beiseite, gibt es viele Entwickler, die ein Framework in PHP, ORM verwenden und immer noch durch die Kapselung für die DAL/BLL halten? Ich leite ein Team von einigen Entwicklern und stelle fest, dass ich bei den meisten Frameworks eine tägliche Code-Inspektion durchführen muss, weil meine Entwickler das eingebaute ORM verwenden.

Im Moment verwende ich ein Tool, um die Klassen und CRUD selbst zu generieren, mit einem Bereich, in dem sie zusätzliche Abfragen/Funktionen schreiben können. Was allerdings passiert, ist, dass sie Schwachstellen schaffen, indem sie die Datenberechtigung nicht ordnungsgemäß überprüfen oder zulassen, dass die Schlüsselfelder im Formular manipuliert werden.

Irgendwelche Vorschläge, außer einem neuen Team und einer neuen Sprache (ich habe gesehen, dass Python/Ruby-Frameworks die gleichen Probleme haben).

0 Stimmen

3voto

soulmerge Punkte 70900

Ein Team wegzuschmeißen ist nie eine Option: Verbessern Sie es stattdessen!

  • Veranstalten Sie Sicherheitsworkshops, um sie für diese Themen zu sensibilisieren.
  • Einführen (oder noch besser: fragen) sie Einführung) von Code-Leitlinien zur besseren Bewältigung dieser Probleme (ein sicherheitsbewusste ungarische Notation oder Verwendung von vorbereitete Erklärungen sind zwei Beispiele)
  • Sprechen Sie die Mängel bei der Codeüberprüfung an - geben Sie ihnen nicht die Schuld, dass sie die Sicherheit ignorieren, zeigen Sie einfach die problematischen Ausschnitte, die Sie gefunden haben, und erklären Sie, dass die Sicherheit sehr wichtig ist für [wählen Sie eines aus: dieses Projekt/den Kunden/den Ruf Ihres Unternehmens/ihre Person]
  • Lassen Sie sie Sicherheitsaudits für ihren eigenen Code oder den ihrer Kollegen durchführen. Lassen Sie sie herausfinden, wie einfach es ist, solche Sicherheitslücken auszunutzen.
  • Finden Sie andere Tools/Frameworks, die Ihr Sicherheitsmodell besser unterstützen. Aber seien Sie gewarnt: Diese Option ist très teuer! Ihre Programmierer müssen den Code im alten Framework pflegen und ein neues lernen (im schlimmsten Fall müssen sie zusammen mit dem neuen Framework auch eine neue Sprache lernen).

Aber im Grunde ist dies ein Problem, das Sie gemeinsam mit Ihren Entwicklern lösen müssen. Wenn Sie ihnen den Krieg erklären, werden Sie zwangsläufig verlieren (unabhängig vom Ergebnis für die Entwickler).

1voto

Gordon Punkte 304254

Für mich hört es sich so an, als wollten Sie die Programmierungskultur verbessern. Werfen Sie einen Blick auf die Regeln der extremen Programmierung . Vielleicht können Sie ein paar Techniken übernehmen.

Grundsätzlich habe ich den Eindruck, dass die Kommunikation zwischen den Entwicklern und Ihnen im Moment sehr eingeschränkt ist. Vielleicht lese ich das nur hinein, aber für mich hört es sich so an, als ob die Entwickler im Keller eingesperrt sind und Sie irgendwo anders sitzen und frustriert sind über sie . Ändern Sie diese Denkweise. Sie sind Teil des Teams.

Wenn Ihre Entwickler sich der Schwachstellen, die sie in den Code einbringen, nicht bewusst sind, sollten Sie wöchentliche Code-Reviews in Erwägung ziehen. Lassen Sie die Entwickler über den von ihnen geschriebenen Code sprechen. Lassen Sie sie voneinander lernen. Machen Sie den Code zum Gemeinschaftswerk. Fördern Sie Lernen und konstruktive Kritik.

Vergessen Sie nicht, dass es kein Ich in Team gibt.

0voto

Zee Spencer Punkte 3386

Darf ich empfehlen Nepthali ? Es ist nicht ein ORM, aber der Rahmen ist entworfen, um Sicherheit zu erzwingen. D.h. alle Variablen werden vor der Ausgabe auf dem Bildschirm verschlüsselt, es sei denn, es wurde explizit anders definiert.

Es ist auch ziemlich schlank, ohne ORM, etc., so dass Sie jede ORM in sie stecken können, die Sie wollen. Es ist ziemlich nett, eigentlich.

0voto

BIOHAZARD Punkte 1799

Wenn Sie prüfen möchten, ob der Benutzer Zugriff auf eine Eigenschaft hat, ist dies eine andere Ebene als die Datenzugriffsebene. Dennoch gibt es Frameworks, in denen Sie die Standardladefunktionalität außer Kraft setzen und Ihre Logik nach/vor dem Laden einfügen können.

Das leichteste Framework, mit dem ich je gearbeitet habe, ist db.php ( http://dbphp.net , https://github.com/hazardland/db.php ). Aber es ist ein code first object rational mapper. Sie werden Klassen als Datenbanken definieren müssen \tables werden entsprechend Ihren Klassen erstellt.

Werfen Sie einen Blick auf \db\table ::load-Methode. Jede Klasse hat ihre eigene Handler-Instanz von \db\table befindet sich im Array database::tables. Sie können table::load außer Kraft setzen oder individuelle Handler für Tabellen erstellen, die von \db\table Klasse und platzieren sie in database::tables.

Das einzige Problem ist, dass das Framework nicht vollständig dokumentiert ist, aber eine sehr leichte intuitive Codestruktur und Beispiele hat.

Eine andere Möglichkeit besteht darin, das Dalgerüst selbst herzustellen. Es dauert bis zu 3-4 Monate für eine Person, um es voll funktionsfähig und leistungsfähig zu machen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X