2016-06-30 8 views
0

Ich baue eine Site-Plattform ähnlich Wordpress, die es meinen Benutzern ermöglicht, eine .zip Datei herunterzuladen, laden Sie sie auf ihren Server, und gut zu gehen.eval Remote-Code von meinem Server

Ich weiß, jeder sagt eval() ist böse - aber der Code wird keine Benutzer- oder Variableneingabe enthalten.

Der Vorteil hier ist, dass Aktualisierungen automatisch erfolgen. Ich kann nur den Code ändern, der auf meinem Server gepackt wird.

Meine Kunden, die den Code verwenden, werden Websites mit ziemlich wenig Verkehr haben - also mache ich mir keine Sorgen über das Überladen ihres Servers. Die meisten schweren Arbeiten werden von uns ausgeführt.

Hier ist das Grundcodekonzept:

$code=file_get_contents("http://myserver.com/code.txt"); 
eval($code); 

Ist die eine realistische Option? Um welche Sicherheitslöcher muss ich mich kümmern?

+0

Das erste, was mir in den Sinn kommt ist, dass der Benutzer vollen Zugriff auf Ihren Computer hat, wenn Sie seinen Code auswerten, er kann also einfach Ihr Home-Verzeichnis löschen und einen roten Drachen oder etwas ähnliches wickeln. Die Frage ist: Können Sie Ihren eigenen Benutzern vertrauen? Wenn ja, gut, sonst, sei vorsichtig. Solange sie jedoch keinen Zugriff auf die Datenbank haben und solange Ihre Verzeichnisse mit den korrekten CHMOD-Einstellungen geschützt sind, sollten Sie ** ziemlich ** sicher sein, aber das werde ich nicht tun , das ist nur meine Meinung. Kurz gesagt, eval ist nicht böse wegen der variablen Eingaben des Benutzers. – briosheje

+0

Ich denke du hast mein System rückwärts. Der Code wird auf meinen * clients * Servern abgelegt. Ihre Server werden den Code von * meinem * Server abholen und es evaluieren. – hellohellosharp

+0

Oh okay, dann ist es das Problem deines Klienten: P Kurz gesagt, sie stimmen zu, ein Stück Code zu bekommen, das ** böse sein kann **, aber solange sie dir vertrauen **, ist das in Ordnung. Seien Sie vorsichtig, denn wenn jemand einen Weg findet, Sie zu injizieren, werden auch diese injiziert, was gefährlich sein kann, aber solange sie damit einverstanden sind und ihnen vertrauen, ist es vollkommen in Ordnung. Seien Sie sich jedoch bewusst, dass das Auswerten von Code das Debuggen/Lesen recht schwierig macht. In diesem Kontext ist es sowieso eher ihr "Problem", nicht wirklich dein :) – briosheje

Antwort

0

Es ist "realistisch" in dem Sinne, dass es funktioniert, aber zur gleichen Zeit klingt es wie ein Albtraum des Systemadministrators. Wenn Sie möchten, dass ein Client bei jeder Anforderung einen Remote-Code herunterlädt und ausführt, sind Ihre Clients nach Belieben, wenn der Master-Server ausfällt oder zu irgendeinem Zeitpunkt nicht erreichbar ist. Es ist jetzt ein unternehmenskritischer Service, den Sie für immer am Laufen halten müssen, solange Ihre Kunden es brauchen.

Sie listen automatische Updates als Vorteil auf, aber ist es? In nahezu jeder Software-Plattform können sich die Funktionen, von denen die Benutzer abhängen, im Laufe der Zeit ändern. Funktionssignaturen können sich ändern, oder die Funktionalität kann ganz zugunsten einer verfeinerten Alternative fallengelassen werden. Da es sich anhört, als würden Sie eine Art Framework schreiben, können Sie garantieren, dass zukünftige Versionen immer abwärtskompatibel sein werden? Nicht jeder benutzt die hochmoderne Version einer Software aus einem bestimmten Grund - sie wollen, dass das, was sie verwenden, stabil ist. Wenn eine aktualisierte Version Ihrer Plattform über Nacht ausläuft, wird der vom Client geschriebene benutzerdefinierte Code (mindestens einer von ihnen versucht dies, selbst wenn Sie dies nicht möchten) oder sogar die alte Standardfunktionalität, die diesen Code enthält, durchbrochen war veraltet, aber arbeitete immer noch mit der vorherigen Version, wie werden sie es auf eine Version zurückrollen, die funktioniert?

Es klingt einfach wie etwas, das schließlich eine Tonne technischer Schulden entstehen wird.

Verwandte Themen