php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 15-07-2010, 21:44
Benutzerbild von ApoY2k ApoY2k
 Registrierter Benutzer
Links : Onlinestatus : ApoY2k ist offline
Registriert seit: Nov 2006
Beiträge: 359
ApoY2k befindet sich auf einem aufstrebenden Ast
ApoY2k eine Nachricht über ICQ schicken ApoY2k eine Nachricht über Skype™ schicken
Standard Arbeiten mit (Pseudo)Packages

Hallöchen liebe PHPler,

ich möchte mich ein bisschen in das Thema der Package/Plugin/Modul/Nennt-es-wie-ihr-wollt-Thematik einarbeiten.

Im Grunde möchte ich für ein Projekt versuchen, die Möglichkeit zu bieten, Plugins zu installieren etc.

Am liebsten wäre mir dafür vorallem, dass man die Plugins gezipped (oder andersartig komprimiert) hochladen kann, und sozusagen wirklich ein gebündeltes Modul hat, welches man ganz einfach erstellen kann und hochlädt.

Beim Installieren kann es ja entpackt werden und die Daten und Ordner angelegt werden, die es enthält.

Wie startet man sowas am besten? Ich habe schon die Pluginstruktur und Datenbank, mir fehlt quasi nur noch die Installation von eben diesen komprimierten Modulen.
Mit Zitat antworten
  #2 (permalink)  
Alt 15-07-2010, 21:51
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

PHP 5.3 kommt mit PHAR.
Mit Zitat antworten
  #3 (permalink)  
Alt 15-07-2010, 21:54
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Als Allererstes solltest du dir Gedanken über mögliche Sicherheitsrisiken machen. Denn bei einem schlampig programmierten Modul bekommst du riesengroße Probleme. Noch schlimmer ist es, wenn jemand ein Hack-Modul einschleust.

Überleg dir also zuerst, welche Sicherheitsmechanismen du einbaust, bevor du dich an die Umsetzung wagst.

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #4 (permalink)  
Alt 16-07-2010, 09:27
Benutzerbild von ApoY2k ApoY2k
 Registrierter Benutzer
Links : Onlinestatus : ApoY2k ist offline
Registriert seit: Nov 2006
Beiträge: 359
ApoY2k befindet sich auf einem aufstrebenden Ast
ApoY2k eine Nachricht über ICQ schicken ApoY2k eine Nachricht über Skype™ schicken
Standard

Okay, wo wir grade davon sprechen. Du hast mich natürlich wie so oft direkt dort getroffen wo ich am wenigsten geplant habe ;-) Momentan kann ich Plugins ohne Probleme laden, auch Abhängigkeiten berücksichtigt etc.

Die Frage nach der Sicherheit kam noch garnicht auf. Ist aber auch ein schweres Thema, momentan bin ich auf folgendem Stand;

Ich denke das gefährlichste "Hacking"-Plugin wäre ein solches, welches Schaden an der Datenbank verursacht oder Daten anderer Plugins ausliest oder ändern kann.

Daher darf jedes Plugin sich Tabellen erstellen (das wird beim Installieren über eine .xml erledigt) und dann auch nur diese Tabellen verwenden, sprich jeder Zugriff auf die Tabellen anderer Plugins oder des Systems selbst wird verhindert.

Die Frage nach den Funktionen der Plugins ist so eine Sache, im Grunde möchte ich es schaffen, dass wirklich jedes Plugin prinzipiell ALLES machen darf, solange es eben nur das Plugin selbst betrifft. Ich möchte eigentlich davon absehen, ein Framework an Funktionen zur Verfügung zu stellen, da ich damit immer die Kreativität der Entwickler einschränke.

Bleibt das Problem, was ein Plugin an sich schädliches ausrichten könnte, wenn die Sache mit der Datenbank so klappt wie ich es oben erklärt habe.
Mit Zitat antworten
  #5 (permalink)  
Alt 16-07-2010, 10:02
ThemBones
 Registrierter Benutzer
Links : Onlinestatus : ThemBones ist offline
Registriert seit: Nov 2005
Beiträge: 131
ThemBones ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von ApoY2k Beitrag anzeigen
Daher darf jedes Plugin sich Tabellen erstellen (das wird beim Installieren über eine .xml erledigt) und dann auch nur diese Tabellen verwenden, sprich jeder Zugriff auf die Tabellen anderer Plugins oder des Systems selbst wird verhindert.
...
Ich möchte eigentlich davon absehen, ein Framework an Funktionen zur Verfügung zu stellen
Ein "Etwas", das nicht zumindest lesend auf die Daten der Anwendung zugreifen darf und/oder irgendeine API anspricht, ist nach meinem Verständnis aber kein Plugin sondern eine eigenständige Anwendung
Mit Zitat antworten
  #6 (permalink)  
Alt 16-07-2010, 10:03
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Man kann zwar relativ einfach sicherstellen, dass ein Plugin nur die eigenen Tabellen benutzt, ich halte das allerdings für keine gute Idee. Stell dir mal vor du speicherst User/Accounts in einer User-Tabelle. Ein Plugin soll nun das Benutzerprofil erweitern. Dann wird es sicherlich Joins mit der User-Tabelle machen müssen. Wenn du das verbietest, muss das Plugin sich die User über eine PHP-Funktion (der Basisapplikation oder eines anderen Plugins) holen. Ohne Join wird das schnell zum Performanceproblem.
Außerdem hat die Basisapplikation oder ein anderes Plugin z.B. eine Funktion zum Löschen eines Benutzers. Wie willst du sicherstellen, dass diese Funktion nicht von einem "unbefugten" Plugin aufgerufen wird?
Mit Zitat antworten
  #7 (permalink)  
Alt 16-07-2010, 10:10
Benutzerbild von ApoY2k ApoY2k
 Registrierter Benutzer
Links : Onlinestatus : ApoY2k ist offline
Registriert seit: Nov 2006
Beiträge: 359
ApoY2k befindet sich auf einem aufstrebenden Ast
ApoY2k eine Nachricht über ICQ schicken ApoY2k eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von ThemBones Beitrag anzeigen
Ein "Etwas", das nicht zumindest lesend auf die Daten der Anwendung zugreifen darf und/oder irgendeine API anspricht, ist nach meinem Verständnis aber kein Plugin sondern eine eigenständige Anwendung
Hmja ich habs vielleicht falsch erklärt. Im Grunde soll jedes Plugin für sich eine eigenständige Applikation sein, aber im Gesamtkonzept eines Programms nur ein Teil sein. z.B. Eine Möglichkeit für SEO-Plugins - das kann selbstständig laufen, wird aber in dem Kontext nur als Plugin eingebaut oder aktiviert, wenn man es haben möchte.

Zitat:
Zitat von onemorenerd Beitrag anzeigen
Man kann zwar relativ einfach sicherstellen, dass ein Plugin nur die eigenen Tabellen benutzt, ich halte das allerdings für keine gute Idee. Stell dir mal vor du speicherst User/Accounts in einer User-Tabelle. Ein Plugin soll nun das Benutzerprofil erweitern. Dann wird es sicherlich Joins mit der User-Tabelle machen müssen. Wenn du das verbietest, muss das Plugin sich die User über eine PHP-Funktion (der Basisapplikation oder eines anderen Plugins) holen. Ohne Join wird das schnell zum Performanceproblem.
Außerdem hat die Basisapplikation oder ein anderes Plugin z.B. eine Funktion zum Löschen eines Benutzers. Wie willst du sicherstellen, dass diese Funktion nicht von einem "unbefugten" Plugin aufgerufen wird?
Tja das sind eben die Fragen, die ich hier diskutieren möchte. Ich will ja jetzt nicht morgen ein perfektes universelles Pluginframework anbieten, aber damit beschäftigen und vielleicht gute Lösungsansätze herausfinden, die ich dann für Projekte nutzen kann. Aber ich habe mir auch andere Pluginsysteme angeschaut (z.B. WCF) und da läuft es meistens auch nur über "Shared"-Klassen, in denen Plugins Schnittstellen anbieten könne, damit sie von anderen Plugins genutzt werden können, eben z.B. um auf grundlegende Userfunktionen zugreifen zu können.

Geändert von ApoY2k (16-07-2010 um 10:19 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 16-07-2010, 10:20
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Du hast zwei Möglichkeiten:
1. API - das Framework stellt nur eine Art Schnittstelle für Plugins bereit,
2. Sandbox - das Framework führt Plugins in einem abgeschotteten Kontext aus.

Die erste Variante verzichtet auf jegliche Schutzmechanismen zur Laufzeit. Dennoch kannst du gewünschtes Verhalten sicher stellen, indem du bspw. nur geprüfte Plugins zuläßt (Prüfung = Code Review).
Die zweite Variante ist mit PHP nur schwer machbar (runkit Extension), komplex und wahrscheinlich weniger flexibel/mächtig.
Mit Zitat antworten
  #9 (permalink)  
Alt 16-07-2010, 10:25
Benutzerbild von ApoY2k ApoY2k
 Registrierter Benutzer
Links : Onlinestatus : ApoY2k ist offline
Registriert seit: Nov 2006
Beiträge: 359
ApoY2k befindet sich auf einem aufstrebenden Ast
ApoY2k eine Nachricht über ICQ schicken ApoY2k eine Nachricht über Skype™ schicken
Standard

Im Grunde wollte ich ebenfalls in Richtung des ersten gehen. Einfach um daran was zu lernen - Produktiv wirds wohl eh nie eingesetzt.

Ich nehme an du meinst mit Prüfung der Plugins, dass ich einfach den Code durchgehe und nachschaue, was es macht und dann sage "okay, genehmigt"? Ich denke das wäre fürs erste die beste Idee, wie gesagt: ich will vorallem was dran lernen.

Ist eigentlich eine schöne Idee, es gibt ja auch genügend Möglichkeiten auf die Integrität der Plugins zu testen über Hashes oder Keys... Eine Frage bleibt aber noch für die Package-geschichte. Eignet sich dafür dieses PHP Archive? Ist auch jeden Fall interessant zu lesen, bloß verstehe ich noch nicht so ganz, wie man diese Archive dann erstellt?

Mal angenommen ich bastle ein neues Plugin und will dann die ganzen Daten dafür packen, muss das dann über ein PHP-Skript laufen? Ich meine... es gibt ja kein Programm, das "PHAR" packen kann oder ?!

Geändert von ApoY2k (16-07-2010 um 10:28 Uhr)
Mit Zitat antworten
  #10 (permalink)  
Alt 16-07-2010, 11:18
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Zitat:
Zitat von ApoY2k Beitrag anzeigen
Mal angenommen ich bastle ein neues Plugin und will dann die ganzen Daten dafür packen, muss das dann über ein PHP-Skript laufen?
Ja.
Zitat:
Zitat von ApoY2k Beitrag anzeigen
Ich meine... es gibt ja kein Programm, das "PHAR" packen kann oder ?!
Versuch mal "phar" auf der Kommandozeile … im Endeffekt auch nur ein PHP-Skript, deshalb oben das Ja.
Mit Zitat antworten
  #11 (permalink)  
Alt 16-07-2010, 11:51
Benutzerbild von ApoY2k ApoY2k
 Registrierter Benutzer
Links : Onlinestatus : ApoY2k ist offline
Registriert seit: Nov 2006
Beiträge: 359
ApoY2k befindet sich auf einem aufstrebenden Ast
ApoY2k eine Nachricht über ICQ schicken ApoY2k eine Nachricht über Skype™ schicken
Standard

Hm okay, dafür könnte man natürlich einen Dienst anbieten. Müsste doch theoretisch möglich sein, dass man sagt "Diesen Ordner packen" und dann per PHP alle Dateien dieses Ordners in ein PHAR packt. sozusagen als Entwickler-Skript.
Mit Zitat antworten
  #12 (permalink)  
Alt 17-07-2010, 21:52
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von ApoY2k Beitrag anzeigen
... Eignet sich dafür dieses PHP Archive? Ist auch jeden Fall interessant zu lesen, bloß verstehe ich noch nicht so ganz, wie man diese Archive dann erstellt?

Mal angenommen ich bastle ein neues Plugin und will dann die ganzen Daten dafür packen, muss das dann über ein PHP-Skript laufen? Ich meine... es gibt ja kein Programm, das "PHAR" packen kann oder ?!
Man kann PHAR-Dateien auch als gewöhnliche ZIP- oder TAR-Archive[1] erstellen, in denen sich eine spezielle Datei, ein so genanntes Manifest und noch ein wenig zusätzliches Brimborium befindet. Wenn du mich fragst: gequirlter Mist, aber das ist man von den PHP-Machern ja mittlerweile gewohnt. Wieder ein Batzen aufgeblähter Klassen mehr, mit denen wir rumspielen dürfen.

--
[1] Um die zu erstellen gibts unzählige Kommandozeilentools und auch welche mit GUI und wenn ich mich nicht irre auch diverse PHP-Klassen, mit denen man die passenden Archive selbst bauen (und packen) kann.

Geändert von fireweasel (17-07-2010 um 22:33 Uhr) Grund: Typos
Mit Zitat antworten
Antwort

Lesezeichen


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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Pseudo Template Klasse deetee PHP Developer Forum 12 21-02-2006 14:07
pseudo code polar Off-Topic Diskussionen 6 06-02-2003 09:27
sleep() für pseudo-cronjob ? fakeraol PHP Developer Forum 2 16-09-2002 14:02
Packages in php ? Troublegum PHP Developer Forum 4 19-04-2002 21:51
packages mit Funktionen & konstantendateien Berni PHP Developer Forum 1 21-09-2000 09:52

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 03:09 Uhr.