Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 40 von 72

Thema: Qualität von Extensions messbar machen

  1. #1
    Contao-Nutzer Avatar von matze
    Registriert seit
    19.06.2009.
    Ort
    Amberg
    Beiträge
    236

    Standard Qualität von Extensions messbar machen

    Hallo.

    Angeregt durch eine Diskussion und von den vielen Meldungen (z.b. bei Heise) dass die größte Schwachstelle eines Systems meist die von Usern produzierten Erweiterungen sind, wollte ich mir mal Gedanken machen:

    Und zwar konkret:
    Vielleicht schaffen wir es, einen Katalog / eine Checkliste zu erstellen mit Dingen, die eine gute bzw eine schlechte Erweiterung ausmachen.
    Was sollte man in Typolight benutzen, was nicht benutzen.
    Wie definiert sich guter Stil und wie schlechter Stil.

    Vielleicht kann man, wenn ein guter Katalog herauskommt, diese Punkte auch mal automatisch abprüfen lassen? Das wäre auf jeden Fall etwas, das mir vorschwebt und auf das ich hinarbeiten möchte.

    Euer Matze

    -----------------------------

    Hier gleich mal meine Vorschläge:

    Durchfall-Kriterien:

    • Verwedung von $_POST, $_GET, $_REQUEST und $_COOKIE
    • Verwendung von eval();
    • Verwendung von mysql_query() oder mysqli_query()

    Nur mal so aus der Hüfte geschossen....

  2. #2
    Gesperrt
    Registriert seit
    22.07.2009.
    Ort
    Dortmund, NRW
    Beiträge
    113

    Standard

    Sehr interessant, ich hab länger nach so einer 'Best Practice' Liste gesucht. Zwar lässt sich lange über die Grenzen automatisierter Softwareverifikation streiten. Aber ein Leitfaden, der über das Entwicklerhandbuch hinaus geht ist ne tolle Idee.

    • korrektes Ableiten - Welche Klasse wann
    • Mail, Session, Input, Request Objekt(e) statt der PHP Pendants
    • Widgets statt Modulen
    • REGXP


    MFG Jan

  3. #3
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.614
    Partner-ID
    1081
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Eine solche Checkliste ist sicherlich nicht nur zur Beruhigung beim Einsatz der Extension wichtig, sondern auch als Final-Checkliste für den Entwickler selbst ganz brauchbar.

    Was mir spontan einfällt ist das Vorhandensein von .htaccess-Dateien in den Extension-Verzeichnissen, die nicht über http: gelesen werden sollen, wo nur PHP mit den richtigen Rechten den Inhalt sehen darf.
    Das variiert natürlich für jede Extension etwas, im Grunde sind es aber meist die Standard-Verzeichnisse:
    - meinModul/config
    - meinModul/dca
    - meinModul/languages/*
    - meinModul/templates

  4. #4
    Contao-Nutzer
    Registriert seit
    22.06.2009.
    Ort
    St.Pauli
    Beiträge
    217

    Standard

    Hi,
    einen Leitfaden würde ich auch begrüßen. Es muss vielleicht nicht so strikt und ausführlich sein wie bspw. hier beim Zend Framework, aber so ein paar Punkte wären evtl. nicht schlecht. Natürlich müssten die dann aber auch (selbst-)verpflichtend sein, denn sonst wäre es für die Katz, fürchte ich.

    Spontan:
    - Benennungen (Ordner, Klassen Funktionen)
    - Code Formatierung
    - (wie schon erwähnt) Kapselung der Session

    Als Vorlage können natürlich Leos eigene Erweiterungen dienen...


    cheers
    Antipitch
    "Some people, when confronted with a problem, think 'I know, I’ll use regular expressions.' Now they have two problems." Jamie Zawinski

  5. #5
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Was sich auch leicht prüfen lässt:
    PHP-Code:
    <?php if (!defined('TL_ROOT')) die('You can not access this file directly!');
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  6. #6
    AG Core-Entwicklung Avatar von Psi
    Registriert seit
    19.06.2009.
    Ort
    Mittelfranken
    Beiträge
    930
    Partner-ID
    5583
    User beschenken
    Wunschliste

    Standard

    An dieser Stelle wäre eine statische Quelltextprüfung toll. Leider habe ich nur mal kurz ein C# Tool in der Hand gehabt, aber sicher gibts hier auch diverse Pendants für PHP.

    Diese könnten dann Fälle wie den Einsatz von mysql_query oder $_GET usw aufspüren und bemängeln. Natürlich müsste man sich hier einige Testfälle überlegen und auf Typolight abstimmen.

  7. #7
    AG CMS-Garden
    Contao-Urgestein
    Avatar von lindesbs
    Registriert seit
    05.06.2009.
    Ort
    Oer-Erkenschwick
    Beiträge
    4.154
    Partner-ID
    keine
    User beschenken
    Wunschliste

    Standard

    Meine Extension TranslationHelper macht in den Erweiterungen eine Analyse auf vorhandene Uebersetzungsfelder.

    Es ist kein Problem eine Erweiterung zu schreiben, die durch alle Module crawlt und Auffaelligkeiten zeigt.

    Fehlende htaccess, "verbotene" Woerter, missing "dies" usw.

    Sollte fix erledigt sein.
    von Willi Voltz aus PR 500: Henry George sagte einmal: »Kultur ist Zusammenarbeit.«


    Contao-Hosting: begeisterter Uberspace-Nutzer

  8. #8
    Contao-Nutzer Avatar von b2m
    Registriert seit
    19.06.2009.
    Ort
    Markgräflerland
    Beiträge
    128
    User beschenken
    Wunschliste

    Standard

    Hi zusammen,

    1. Klasse Idee!

    2. was mir immer wieder auffällt ist, dass manche Leute absolut keine Ahnung von OOP haben. Dies äußert sich dadurch, dass zig Methoden neu definiert werden die im Framework eigentlich schon existieren. Noch schlimmer: die komplette Klasse im Framework wird ersetzt, ohne auf dessen Code zurückzugreifen. Solche Erweiterungen fallen bei mir sofort durch, weil das imho sehr schnell zu Inkompatibilität mit Typolight oder dem Framework kommt und zusätzliche Schwachstellen produziert.

    Also imho falsches Vorgehen: ersetzen der kompletten Original-Klasse durch eigene Klasse um XY zu überprüfen.

    Besseres Vorgehen: abgeleitete Klasse schreiben, Überprüfung XY vornehmen, dann an parent übergeben (wenn es nicht sogar mit einem Hook lösbar wäre...).

    3. Mit einem Typolight können mehrere Projekte unter verschiedenen Domains betreut werden. Erweiterungen in den betreffenden Bereichen, die das auch 100% unterstützen gehören mit einer Extrabelobigung ausgezeichnet! <= "Auszeichnung" führt auf die falsche Fährte... meine eher eine Art "Kennzeichnung".

    4. Zum Thema automatische Codevalidierung: da gab es doch eine ganze Artikelreihe auf phphatesme.com

    Gruß b2m
    Geändert von b2m (30.01.2010 um 23:55 Uhr) Grund: Missverständliche Formulierung
    1+1=10

  9. #9
    AG CMS-Garden
    Contao-Urgestein
    Avatar von lindesbs
    Registriert seit
    05.06.2009.
    Ort
    Oer-Erkenschwick
    Beiträge
    4.154
    Partner-ID
    keine
    User beschenken
    Wunschliste

    Standard

    So, ich habe eine Erweiterung soweit gerade fertig gemacht, die ein Modul freiwaehlbar kontrollieren kann

    Hier im Wiki stehen die aktuellen Funktionen :

    Ich bitte Euch alle, mir mehr Input zu geben. Welche Suchwoerter muessen noch dazu, welche Kontrollen fehlen usw.

    Das baue ich dann am WE alles noch mit dazu, und am Montag haben wir dann den ModuleSecurityChecker, entstanden aus den Wuenschen der Community,

    Und da bezeichne jemand nochmal die Community als nicht hilfsbereit.....


    BTW : Toflar & ich werden die Dinge dann im WIKI zusammentragen. Wer schon einen TL-Forge Account hat, und auch direkt im Wiki schreiben moechte, PN an mich, dann schalte ich ihn dafuer frei. Ansonsten Ideen hier im Thread oder als FeatuteWunsch in den Bugtracker.

    Waer doch gelacht, wenn wir da nicht ein geiles Teilchen hinbekommen....

    Screenshot :
    Geändert von lindesbs (29.01.2010 um 21:57 Uhr)
    von Willi Voltz aus PR 500: Henry George sagte einmal: »Kultur ist Zusammenarbeit.«


    Contao-Hosting: begeisterter Uberspace-Nutzer

  10. #10
    Contao-Nutzer
    Registriert seit
    22.06.2009.
    Ort
    St.Pauli
    Beiträge
    217

    Standard

    Sehr geil, Stefan!

    Vieleicht können wir so auch zu einer Art Klassifizierung/ Siegel ("Typolight Approved Extension" oder so) für's Repository gelangen. Vermutlich müssten aber auch individuelle/ visuelle Checks Niederschlag finden können (vgl. b2m's Posting). Es sollten dann aber gezielte Möglichkeiten des Feedbacks/ Autauschs vorhanden sein, zu einem "Extension Bashing" soll das ganze ja nicht führen...


    cheers
    Antipitch
    "Some people, when confronted with a problem, think 'I know, I’ll use regular expressions.' Now they have two problems." Jamie Zawinski

  11. #11
    Contao-Urgestein Avatar von jan.theofel
    Registriert seit
    23.06.2009.
    Ort
    Berlin
    Beiträge
    1.846

    Standard

    Hi,

    ich möchte nur zu Bedenken geben, dass ein "Siegel" zugleich alle Module abwerten würde, die dieses Siegel nicht tragen. Dennoch sind diese vielleicht besserer bzw, sicherer implementiert weil sich dort ein Autor Gedanken um die saubere Nutzung scheinbar "böser" Funktionen gemacht hat statt sich blind auf einen automatisierten Test zu verlassen.

    Dennoch halte ich einen solchen Schritt generell für begrüßenswert.

    Jan
    Jan Theofel
    Barcamp-Moderator für Corporate-Barcamps und öffentliche Barcamps

  12. #12
    Contao-Nutzer
    Registriert seit
    22.06.2009.
    Ort
    St.Pauli
    Beiträge
    217

    Standard

    Hi Jan,
    dass ein "Siegel" zugleich alle Module abwerten würde, die dieses Siegel nicht tragen.
    genau, deshalb auch mein Hinweis mit dem Bashing.

    Zunächst mal müsste abgeklärt werden, ob die Community und Leo eine erweiterte Qualitätskontrolle und Zertifizierung überhaupt möchten. Dann müsste es dafür klare Regularien und evtl. ein Team geben und die Zertifizierung sollte vermutlich eher beantragbar als Pflicht sein (wobei natürlich die Differenzierung von RCs/ Alphas zur Verfügung steht). Und im Repository müsste es dann eine genaue Erklärung geben, die unter anderem klarstellt, dass nicht zertifizierte Erweiterungen nicht per se schlecht sein müssen.

    Ist ja auch erstmal nur ein Gedanke, der matzes Idee eines Leitfadens für die Entwicklerseite fortsetzt. Auch wenn die Feedback-Funktionen im Repository anscheinend nur spärlich genutzt werden: es scheint ja ausreichend Kommunikation zu geben und über das gros der Erweiterungen muss man sich wohl nicht beschweren...


    cheers
    Antipitch
    "Some people, when confronted with a problem, think 'I know, I’ll use regular expressions.' Now they have two problems." Jamie Zawinski

  13. #13
    AG CMS-Garden
    Contao-Urgestein
    Avatar von lindesbs
    Registriert seit
    05.06.2009.
    Ort
    Oer-Erkenschwick
    Beiträge
    4.154
    Partner-ID
    keine
    User beschenken
    Wunschliste

    Standard

    Halt ! Ich mache das Modul NICHT um einer Extension eine Bewertung aufzudruecken. Es ist eher eine Unterstuetzung fuer den Entwickler, ob der sich an die Definitionen gehalten hat.
    Also, ob ueberall die htaccess sind usw.

    Es soll nicht dazu dienen, einen Index zur Bewertung zu machen.
    Klar kann man schnell nachschauen, ob ein Modul "boese Woerter" hat oder sich nicht an Regelen haelt, aber mehr auch nicht.
    von Willi Voltz aus PR 500: Henry George sagte einmal: »Kultur ist Zusammenarbeit.«


    Contao-Hosting: begeisterter Uberspace-Nutzer

  14. #14
    Contao-Fan Avatar von acenes
    Registriert seit
    13.06.2009.
    Beiträge
    407

    Standard

    Zitat Zitat von Antipitch Beitrag anzeigen
    Auch wenn die Feedback-Funktionen im Repository anscheinend nur spärlich genutzt werden
    Richtig. Und die Möglichkeit zur Bewertung oder Rezension ist mit massiv weniger Aufwand verbunden als ein Code Review - wird trotzdem kaum genutzt.

    Das ganze scheitert halt immer am Aufwand den es braucht um ein Gütesiegel zu validieren, und ohne Validierung duch kompetente Leute ist es nichts Wert. Abseits von bezahlten Inhalten ist so etwas leider kaum realistisch.

  15. #15
    Contao-Nutzer Avatar von matze
    Registriert seit
    19.06.2009.
    Ort
    Amberg
    Beiträge
    236

    Standard

    So eine automatisierte Bewertung ist schön. Ich finds auch cool, dass du das jetzt schon gemacht hast.
    Allerdings finde ich die Reihenfolge gerade falsch.

    Wir sollte zuerst mal einen durchdachten Katalog/Liste aufstellen. Und wenn die fertig ist, dann kann man das umsetzen in Software.

    Alles andere macht keinen Sinn. Der Entwickler sollte sich ja zuerst dieses Dokument durchlesen um dann seine Extension zu entwickeln. Erst nach der Entwicklung sollte dann noch der Test auf Fehler passieren um Flüchtigkeitsfehler zu verhindern.

    Was ich in diesem Zusammenhang interessant fände:
    In einem anderen Topic wurde gesagt, dass vor kurzem eine Extension aus dem Rep geflogen ist (irgendwas mit PayPal). Wäre mal interessant, was der entsprechende Autor falsch gemacht hat.

    --------
    EDIT: Das Problem mit der Bewertung im Rep liegt meiner Meinung nach nicht an der Faulheit der Leute sondern an der Art wie es kommuniziert wird. Ich Extensions z.B. nicht in meinem Backend bewerten sondern muss das auf der Website tun. Da bin ich aber nie. Außerdem ist die Bewertung nicht wirklich präsent kommuniziert.
    Geändert von matze (30.01.2010 um 09:42 Uhr)

  16. #16
    AG CMS-Garden
    Contao-Urgestein
    Avatar von lindesbs
    Registriert seit
    05.06.2009.
    Ort
    Oer-Erkenschwick
    Beiträge
    4.154
    Partner-ID
    keine
    User beschenken
    Wunschliste

    Standard

    Hm, Richtigstellung : Es geht keineswegs um eine "Bewertung"

    Es ist einfach nur eine EntwicklerHilfe, so wie mein TranslationHelper (der mir fehlende Uebersetzungen anzeigt), mit der sich ein Entwickler vergewissern kann, das er alles "richtig" gemacht hat,

    Es liegt mir fern ein automatisiertes BewertungsTool zu schreiben...

    Das kann das menschliche Hirn einfach besser.
    von Willi Voltz aus PR 500: Henry George sagte einmal: »Kultur ist Zusammenarbeit.«


    Contao-Hosting: begeisterter Uberspace-Nutzer

  17. #17
    Contao-Fan Avatar von hschottm
    Registriert seit
    15.06.2009.
    Ort
    Loxstedt, Germany
    Beiträge
    825
    User beschenken
    Wunschliste

    Standard

    Also ich finde es gut so einen Check zu haben, um schon mal grundlegende Inkonsistenzen mit den Vorgaben aufzudecken. Man muss ja auch sagen, dass diejenigen, die "verbotene" Elemente wie $_GET, $_POST, Umgehen der Datenbankabstraktion, htaccess so was nicht absichtlich machen, sondern eher aus Unwissenheit. Das Tool von lindesbs kann da schon mal ganz grobe Dinge aufdecken, die jeder beachten sollte und das finde ich sehr gut. Das sollte aber dann auch fernab von jeglicher automatischer Bewertung sein.

    Ich weiß wie das ist und vielen ist es wahrscheinlich ähnlich gegangen: Man nimmt sich bestehende Module, schaut sich an, was die machen und versucht sein Modul ähnlich zu gestalten. Das sollte obige Fehler eigentlich schon mal vermeiden, aber offensichtlich ist es ja nicht so. Also Daumen hoch für eine solche Möglichkeit zur Überprüfung. Es wäre sogar cool wenn man so was im Repository eingebaut hätte und dann als Entwickler ein Warning angezeigt bekommt.

    Das mit den Framework-Funktionen ist natürlich so ne Sache. Ich habe mich auch häufig dabei ertappt, dass mir irgendwann aufgefallen ist, dass ich Funktionen nachprogrammiert habe, die es eigentlich schon gibt. Nun dokumentiert Leo seine Arbeit super, daran kanns nicht liegen. Mittlerweile suche ich auch mal länger nach etwas vorhandenem, um nicht in die Verlegenheit zu geraten, es selbst noch mal zu schreiben. Hier sollte eigentlich (wenn man dann selbst zu faul, zu unorganisiert oder was auch immer ist) auch das Community-Forum helfen. Es ist ja in der Regel kein Problem mal ne Anfrage zu starten, ob's diese oder jene Funktionalität schon gibt. Da kriegt man in der Regel schnell 'ne Antwort. Bloß meistens läuft es in der Realität ja anders. Da will man nun auf Teufel komm raus schnell ein Modul fertig bekommen, weil man es irgendwo auch dringend braucht. Ich glaube, die meisten meiner Module sind mit der heißen Nadel gestrickt...

    Lange Rede kurzer Sinn: Der oben angeregte Leitfaden: Von Entwicklern für Entwickler (und da möchte ich Leo auf jeden Fall außen vor halten, denn der hat schon genug Arbeit), wäre aus meiner Sicht eine tolle Sache. Ich würde auch gerne im bescheidenen Rahmen der mir verfügbaren Zeit an so etwas mitarbeiten, sollte sich da also eine Gruppe finden, ich bin dabei!

    LG,
    Helmut
    Blackmail's such an ugly word. I prefer extortion -- the "x" makes it sound cool.
    -- Bender

  18. #18
    Contao-Urgestein Avatar von FloB
    Registriert seit
    19.06.2009.
    Ort
    Sonnensystem
    Beiträge
    1.618

    Standard

    Vor ein paar Tagen war im Forum auch schon die Rede von einem Beginner's Guide für TL-Programmierer. Kann man ja mit einem Leitfaden prima kombinieren!
    So long,
    FloB since Nov. 2007 +706P +115P and counting

  19. #19
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    Ich finde das Tool als reine Entwicklerhilfe sinnvoll, wie erwähnt macht man mal schnell was um es zum Laufen zu bekommen und vergisst dann später das eine oder andere.

    Die Bewertungen im ER bringen mir so gut wie garnichts, besonders wenn dort beispielsweise bei Bedienung eine schlechte Bewertung erfolgt.
    Erstes ist halt nicht alles möglich und zweitens kann nicht ich so nicht erfahren was denn so stört.

    In den Rezensionen wiederum steht nicht dabei, für welche Version diese war.
    (Nachtrag: Ups, steht ja doch da, hab ich übersehen)

    Eine Bewertung macht doch nur Sinn, wenn ich die Auswahl habe an Alternativen.

    Außerdem, das wiederum müsste dann in den Guide, was tue ich als Entwickler wenn mir das Tool sagt ich hätte den Error 47 begangen....
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  20. #20
    Contao-Nutzer
    Registriert seit
    22.06.2009.
    Ort
    St.Pauli
    Beiträge
    217

    Standard

    Hi Leute,
    Zitat Zitat von Stefan
    Ich mache das Modul NICHT um einer Extension eine Bewertung aufzudruecken.
    so hatte ich das auch nicht verstanden bzw. war meine Antwort auch nicht gemeint. Sorry, falls das missverständlich war.

    Zitat Zitat von matze
    Wir sollten zuerst mal einen durchdachten Katalog/Liste aufstellen. Und wenn die fertig ist, dann kann man das umsetzen in Software.Alles andere macht keinen Sinn.
    Ich denke Stefan wollte zunächst mal zeigen, dass sowas durchaus und relativ fix durch Software unterstützt werden kann. Bevor es zu irgenwelchen releases kommt, sollte eine sinnvolle Planung und Veröffentlichungsabfolge natürlich geklärt sein.

    Zitat Zitat von acenes
    Abseits von bezahlten Inhalten ist so etwas leider kaum realistisch.
    Muss ich dir natürlich leider Recht geben. Schon die notwendige Organisationsstruktur für die 2. Hälfte wirkt abschreckend. Aber wer weiß... Die erste Hälfte (Leitfaden/ Tool für Entwickler) wäre aber ja zumindest schon mal was.

    Zitat Zitat von BugBuster
    Die Bewertungen im ER bringen mir so gut wie garnichts, besonders wenn dort beispielsweise bei Bedienung eine schlechte Bewertung erfolgt.
    Das stimmt wohl, ich denke aber eh, dass Dinge wie Bedienungsfreundlichkeit eher im normalen Feedback verbleiben sollten. Und um die Feedbackmöglichkeiten zu pushen (vgl. auch acenes posting), könnte da ja ruhig mal eine Einleitung/ Teaser oben im Rep stehen (mit Verlinkung auf eine längere Erklärung bzgl. Sinn u. Möglichkeiten).

    Error 47? Ist glaub ich "Zu früh ins Bett gegangen", oder ?


    cheers
    Antipitch

    PS für die Liste:
    1. Nicht erweiterbare blanke Helperfunktionen im Modul
    2. Bequemlichkeits-Vollballern des Config-Arrays (auch wenn auf selbiges ab 2.8 händisch mehr Einfluss genommmen werden kann).
    "Some people, when confronted with a problem, think 'I know, I’ll use regular expressions.' Now they have two problems." Jamie Zawinski

  21. #21
    AG CMS-Garden
    Contao-Urgestein
    Avatar von lindesbs
    Registriert seit
    05.06.2009.
    Ort
    Oer-Erkenschwick
    Beiträge
    4.154
    Partner-ID
    keine
    User beschenken
    Wunschliste

    Standard

    Antipitch hats richtig gedeutet. Es geht erstmal darum, "was ist moeglich". Die Basis fuer die Auffindung von "Problemstellen" ist gegeben, was nun gefunden werden soll, muss halt die Community definieren.
    von Willi Voltz aus PR 500: Henry George sagte einmal: »Kultur ist Zusammenarbeit.«


    Contao-Hosting: begeisterter Uberspace-Nutzer

  22. #22
    Contao-Nutzer Avatar von matze
    Registriert seit
    19.06.2009.
    Ort
    Amberg
    Beiträge
    236

    Standard

    Genau das wollte ich ja von Anfang an mit diesem Topic erreichen.
    Also fangen wir mal frisch an

    Gibt es denn vielleicht Funktionen in PHP die von PHP aus nicht sicher sind, weil sie manche Zeichensätze nicht wirklich unterstützen? Ich dachte ich hab da mal was gelesen...

  23. #23
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Ich hab mal das Wiki mit Config-Daten erweitert, die man eigentlich nicht braucht. Ist sicher nicht abschliessend
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  24. #24
    Contao-Nutzer Avatar von b2m
    Registriert seit
    19.06.2009.
    Ort
    Markgräflerland
    Beiträge
    128
    User beschenken
    Wunschliste

    Standard

    Hi zusammen,

    ich habe hier mal noch eine Liste von Funktionen, die imho nicht verwendet werden sollten (wenn sie nicht sogar schon Serverseitig gesperrt sind):

    • apache_get_modules()
    • apache_get_version()
    • apache_getenv()
    • apache_setenv()
    • dir()
    • dl()
    • eval()
    • exec()
    • fsockopen()
    • get_defined_functions()
    • highlight_file()
    • ini_alter()
    • ini_restore()
    • ini_set()
    • passthru
    • phpinfo()
    • show_sources()
    • symlink()
    • system()
    • tmpfile()

    btw: könntet ihr die gesperrten Funktionen im Wiki auch alphabetisch ordnen?

    Des Weiteren könnte man sich die in Typolight verwendeten Design-Patterns mal noch genauer ansehen. Häufig benötigte Klassen wie Database selbst zu organisieren ist generell unnötig und zeugt von Unkentniss der API.

    Ich wollte außerdem noch einmal anregen sich mit dem CodeSniffer zu beschäftigen (siehe auch Artikelreihe auf phphatesme. Damit könnten wir sehr viel tiefer gehende Coding-Standards festlegen und auch Anfängern eine Hilfe bezüglich Codeeinrückung, Kommentare... geben.

    Gruß b2m
    Geändert von b2m (08.02.2010 um 14:46 Uhr) Grund: Tippfehler
    1+1=10

  25. #25
    Contao-Nutzer Avatar von b2m
    Registriert seit
    19.06.2009.
    Ort
    Markgräflerland
    Beiträge
    128
    User beschenken
    Wunschliste

    Standard

    Hi zusammen,

    habe ich total vergessen: was ist mit $_FILES und $_SESSION?
    Sowie den veralteten Version $HTTP_SESSION_VARS, $HTTP_GET_VARS usw.?

    Gruß b2m
    1+1=10

  26. #26
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Wiki angepasst. Auch alphabetisch jetzt.
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  27. #27
    Contao-Urgestein Avatar von Sebastian
    Registriert seit
    19.06.2009.
    Ort
    Stuttgart
    Beiträge
    3.361

    Standard

    HI

    mal eine Frage: Prüft das Modul nur in system/modules/*, oder kann es auch Dateien an anderen Orten von TL testen? Oder haltet ihr das für irrelevant?

    Sebastian

  28. #28
    AG CMS-Garden
    Contao-Urgestein
    Avatar von lindesbs
    Registriert seit
    05.06.2009.
    Ort
    Oer-Erkenschwick
    Beiträge
    4.154
    Partner-ID
    keine
    User beschenken
    Wunschliste

    Standard

    Es sucht dort, wo ICH will, da ich aber davon ausgehe, das der CORE an sich "Safe" ist, wird nur system/modules kontrolliert. Dort alle Dateien, deren Extension vorgegeben ist, also "php,tpl,inc".
    Man koennte noch template hinzunehmen, das veraendert sich ja nicht ohne Wissen des Anwenders.
    von Willi Voltz aus PR 500: Henry George sagte einmal: »Kultur ist Zusammenarbeit.«


    Contao-Hosting: begeisterter Uberspace-Nutzer

  29. #29
    Contao-Nutzer Avatar von matze
    Registriert seit
    19.06.2009.
    Ort
    Amberg
    Beiträge
    236

    Standard

    hmmm...
    Wie wäre es denn, wenn man das Schlüsselwort new als böse deklariert.
    Denn eigentlich soll man ja keine Instanzen direkt erstellen sondern via import() die Klassen nutzen.
    Evtl müsste man dann das new zusammen mit den bei TL eingebauten Klassen ergänzen...

  30. #30
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von matze Beitrag anzeigen
    hmmm...
    Wie wäre es denn, wenn man das Schlüsselwort new als böse deklariert.
    Evtl müsste man dann das new zusammen mit den bei TL eingebauten Klassen ergänzen...
    Ich benutze new, allerdings nicht um TL internes zu nutzen sondern um eigene zusätzliche Klassen oder Klassen von dritte die innerhalb meines Modules liegen zu nutzen. Daher wäre rein nach new zu suchen nicht so günstig.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  31. #31
    Contao-Urgestein Avatar von Sebastian
    Registriert seit
    19.06.2009.
    Ort
    Stuttgart
    Beiträge
    3.361

    Standard

    HI

    ich dachte auch daran, dass manche Module etwas in plugins/ oder in system/drivers ablegen.

    Sebastian

  32. #32
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.614
    Partner-ID
    1081
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Code:
    Wie wäre es denn, wenn man das Schlüsselwort new als böse deklariert.
    Was ist aber, wenn ich eine Datei erstellen möchte?
    Dann brauche ich eine Instanz von File, also new File( $dateiname ).
    Wenn ich das anders mache arbeite ich wieder am Framework vorbei - ein Teufelskreis!

    Weitere Beispiele:
    $objTemplate = new BackendTemplate('be_wildcard');
    $this->Date = new Date(date('Ymd'), 'Ymd');

    Ich denke, das mit dem new verbieten, sollte man auslassen.

  33. #33
    Contao-Urgestein Avatar von FloB
    Registriert seit
    19.06.2009.
    Ort
    Sonnensystem
    Beiträge
    1.618

    Standard

    Zitat Zitat von b2m Beitrag anzeigen
    • symlink()
    Was macht dat denn hier? Dafür gibts keine Wrapper-Funktion in TL, also sollte das auch nicht auf der Liste auftauchen. Ich sehe auch nicht, wo diese Funktion unsicher sein soll (bis auf falsche Benutzung)?
    So long,
    FloB since Nov. 2007 +706P +115P and counting

  34. #34
    Contao-Nutzer Avatar von matze
    Registriert seit
    19.06.2009.
    Ort
    Amberg
    Beiträge
    236

    Standard

    deswegen meinte ich ja weiter oben: New nur mit Einschränkung auf bestimmte Klassen.

    Also new Database ist nicht der Hit, da man dann besser import('Database') verwenden soll.

    Oder?

  35. #35
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    jo, so passt das.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  36. #36
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Hey Leute

    Mal ehrlich: So langsam driften wir vom Thema ab. Ich denke wir sollten uns nicht Gedanken zum Coding-Stil machen und auch nicht darüber, ob TL-eigene Methoden und Klassen verwendet werden oder nicht.

    Hier geht es um die Sicherheit. Mir ist doch egal, ob jemand eigene header schreibt anstatt sendFileToBrowser() nutzt. Mir ist auch egal, ob jemand eine eigene redirect-Methode schreibt oder $this->redirect() nutzt.
    Solange die Sache sauber und sicher geschrieben ist, kann derjenige von mir aus alles selber schreiben.

    Nicht, dass ich gegen Code-Reusage wäre - im Gegenteil! Aber ich denke, schlussendlich lässt sich der Coding-Stil eh nicht kontrollieren bzw. ich finde darüber sollten wir auch nicht urteilen.

    Es geht hier vor allem um die Sicherheit der Extensions und somit TL an sich. Deshalb ist der jetzige BadWord-Approach schon der richtige Weg
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  37. #37
    Contao-Nutzer Avatar von b2m
    Registriert seit
    19.06.2009.
    Ort
    Markgräflerland
    Beiträge
    128
    User beschenken
    Wunschliste

    Standard

    Hi
    @FloB: symlink() ist sehr hilfreich dabei bei hacking-Attacken aus dem Webroot herauszuspringen (natürlich abhängig von Severkonfig blablabla...)

    - - - - - -

    Bezüglich Ort: wenn wir schon von Sicherheit reden - warum nicht die ganze Installation überprüfen? Dann nimmt andersweitig hochgeladenen schädlichen Code gleich noch mit und kann sich gegenebenfalls Gedanken darüber machen wo denn das herkommt.

    - - - - - -

    @Toflar: Coding Stil: lässt sich problemlos kontrollieren (siehe z.B. PEAR). Ein für Typolight erweiterter Regelsatz würde es gerade auch Anfängern erleichtern. Aber ich vermute mal, dass sich kein Entwickler gerne in seiner Kreativität einschränken lassen will.

    Gruß b2m
    PS: ich dachte es ginge um Qualität und um Sicherheit, aber wir können das Thema natürlich auch auf den wichtigeren Aspekt der Sicherheit reduzieren.
    1+1=10

  38. #38
    Contao-Urgestein Avatar von FloB
    Registriert seit
    19.06.2009.
    Ort
    Sonnensystem
    Beiträge
    1.618

    Standard

    Zitat Zitat von b2m Beitrag anzeigen
    @FloB: symlink() ist sehr hilfreich dabei bei hacking-Attacken aus dem Webroot herauszuspringen (natürlich abhängig von Severkonfig blablabla...)
    Mit vielen anderen Funktionen schafft man das auch . Es gibt aber wie gesagt keine Wrapper-Funktion im Framework, somit würde diese Info angekreidet werden, wenn jemand eine Erweiterung bastelt, die Symlinks erzeugt.

    Zitat Zitat von b2m Beitrag anzeigen
    Bezüglich Ort: wenn wir schon von Sicherheit reden - warum nicht die ganze Installation überprüfen? Dann nimmt andersweitig hochgeladenen schädlichen Code gleich noch mit und kann sich gegenebenfalls Gedanken darüber machen wo denn das herkommt.
    Der Core nutzt einige der Badwords – und nicht nur die Dateien in /system/libraries/. Das spricht dagegen. Und nein, ausschließen der bestimmten Ordner ist nicht effektiv – eine Erweiterung kann theoretisch in jeden Ordner Dateien ablegen. Ein Ausschließen von Dateilisten bringt ebenso wenig – zu viele Daten und Core-Dateien können auch überschrieben werden.

    Dennoch: Es sollte noch überprüft werden, ob Extensions versuchen Dateien in einem Core-Extension-Ordner abzulegen oder anderen Ordnern, die nicht dafür gedacht sind (Temp-, Log-Verzeichnis etc.).
    So long,
    FloB since Nov. 2007 +706P +115P and counting

  39. #39
    Contao-Fan Avatar von deerwood
    Registriert seit
    24.11.2009.
    Ort
    Hamburg
    Beiträge
    344

    Standard

    Moin Leo, alle,

    Zitat Zitat von leo.unglaub Beitrag anzeigen
    ... Eine Extensionüberprüfung wie ihr das hier vorschlagt ist definitiv der falsche Weg. Es ist einfach nicht möglich Programmcode maschinell auf Sicherheit prüfen zu lassen. So einen Code Audit muss IMMER ein Programmierer selbst machen, alles andere bringt es einfach nicht. ...
    Ich verstehe die Erweiterung von lindesbs als SEHR hilfreiches Tool, wie etwa lint. Es weist schlicht auf Stellen im Code hin, die fragwürdig sind. Aber es verhindert und bewertet nichts. Sehr hilfreich für Neulinge und gestresste Programmierer.

    Wenn der Check NICHTS meldet, dann ist sicher noch nicht alles OK, aber viele grobe Fehler sind vermieden (ich hatte mal jemanden, der direkt $_GET Variablen ungeprüft in einen SQL-Query-String eingebaut hatte, auf die Probleme hingewiesen ... der war dann tödlich beleidigt )

    WENN der Check Warnungen ausspuckt, dann heisst das ja noch lange nicht, dass der Code schlecht ist ... falls, wie in Deinem Fall z.B., jemand weiss, was er tut. Dennoch ist das oft ein Hiweis darauf, dass man etwas verbessern kann, etwa besser kapseln oder Helfer-Klassen zur Kollaboration einführen oder ein Feature-Ticket schreiben usw.

    Der Programmier-Stil sollte sicher nicht geprüft werden und das hat lindesbs, soweit ich sehen kann, auch nicht vor. (Ich persönlich habe z.B. riesige Probleme, komplexe einzilige SQL Statements zu verstehen, egal, wie breit mein Bildschirm ist. Etwa mit JOINS und SUBQUERIES).

    Meine Gedanken zur Erweiterung:
    • Kategorisierung/Tagging der Prüfergebnisse, z.B. Sicherheitsrelevant, Fehler, Warnung, Hinweis
    • Hilfetexte bzw. Hinweise, wie man es besser machen kann. Z.B. statt $_GET $this-Input-get() verwenden.


    Ich werde das Tool nutzen ... sei es auch nur, um auf fehlende .htaccess Datein hinzuweisen (hoffentlich).

    LG, Georg

  40. #40
    Contao-Nutzer Avatar von b2m
    Registriert seit
    19.06.2009.
    Ort
    Markgräflerland
    Beiträge
    128
    User beschenken
    Wunschliste

    Standard

    Hi zusammen,

    bzgl. symlink(): es war ein Vorschlag (umso besser, dass darüber diskutiert wird). Was ich eben meinte ist, dass Schadcode diese Funktion beinhalten wird und die Module, die diese Funktion enthalten sich dafür in Grenzen halten werden. Deshalb kann imho durchaus eine getaggte/kategorisierte Warnung wie von deerwood vorgeschlagen a la: symlink in Verwendung blubb ausgegeben werden, was dann manuell nachgeprüft werden kann.

    @leo.unglaub: Bezüglich new - doch du kannst Mails ohne new verschicken (z.B. mit dem zweiten, optionalen Parameter von System::import()), nur über den Sinn lässt sich streiten. Außerdem ging es eher darum bestimmte Core Klassen wie die Datenbank nicht ständig selbst zu organisieren, sondern das der Klasse von der man ableitet zu überlassen.

    Auch hier werden sich die Fälle in denen das nötig ist sich so in Grenzen halten, dass dies manuell geprüft werden kann.

    Ich persönlich verstehe das Tool als Hilfestellung und nicht als ultimo ultra... Es weist mich auf Stellen hin, die ich mir noch einmal genauer ansehe und mit sinnvollen Meldungen ist es durchaus auch für Anfänger eine Hilfe.

    @FloB: natürlich nutzt der Core einige Badwords... irgendwo muss ja mal angefangen werden Aber auch das sollte einem auch nur annähernd erfahrenen Entwickler keine Probleme bereiten.

    Gruß b2m
    Geändert von b2m (08.02.2010 um 14:44 Uhr) Grund: Inkorrekte Ausdrucksweise verbessert
    1+1=10

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 3 (Registrierte Benutzer: 0, Gäste: 3)

Ähnliche Themen

  1. Qualität der Galeriebilder zu schlecht
    Von bert im Forum Bilder/Dateien
    Antworten: 25
    Letzter Beitrag: 28.05.2018, 07:45
  2. Qualität der Übersetzung
    Von Wurzel im Forum Mehrsprachigkeit
    Antworten: 6
    Letzter Beitrag: 30.08.2010, 21:36
  3. Probleme mit JPG Qualität nach Update auf 2.8.1
    Von hendele im Forum Bilder/Dateien
    Antworten: 7
    Letzter Beitrag: 23.03.2010, 19:09
  4. Ajax-Extensions barrierefreier machen
    Von Nina im Forum Entwickler-Fragen
    Antworten: 14
    Letzter Beitrag: 21.03.2010, 16:04
  5. Qualität des Bildes im Modul Zufallsbild
    Von chefprolet im Forum Bilder/Dateien
    Antworten: 1
    Letzter Beitrag: 06.08.2009, 19:05

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •