Hallo, ich habe in Javascript einen String, welcher etwa "so" ausschaut: "( [length] * [width] ) * [weight]" ODER "( [length] * [width] ) - [flaeche2]" ... das sind divere "formeln" welche in einer Datenbank abgespeichert werden, welche dan später für die "berechnung" gebraucht werden... die werte in den "eckigen" klammern sind variablen... so steht hinter eval( "length" ) eine länge... die "anfänge" sind die einfachen Mathe operatoren +-*/ klammern Später denke ich auch über Exponentialfunktionen, Wurzeln... nach die 1. Frage wäre, ist es "so" intelligent die Formel abzuspeichern? die 2. (wichtigere Frage), WIE mach ich die Formel jetzt nutzbar? vielen Dank für jeden Tipp da bin ich mit einem Kopf hinterm Brett rumgelaufen...: eval ist ja schon die lösung ... vergesst die frage...
:
Bearbeitet durch User
Hi Woher kommen die Werte, Die Du mit dann an eval verfütterst? Dir ist bekannt, daß man NIE eine Benutzereingabe an eval übergibt, da so ein unbekannter Code von Dir/Deinem Programm ausgeführt wird. Mit eval kann man viel machen, die Schutzmaßnahmen, Die man treffen muß, stehen aber in keinem Verhältnis. MfG
Der umständliche Weg "nach Lehrbuch": Du schreibst dir eine Grammatik für deine Ausdrücke, und lässt einen Parser-Generator darauf los (für JS z.b. https://pegjs.org/) Auch halbwegs nach Lehrbuch, weniger Fremdcode, mehr eigener: Recursive Descend parser runtertippen. "Scanner-Teil" durch Regexp ersetzten. Heute aktueller Weg: Youtube-Video zum Thema anschauen, fertiges npm modul einbinden. :/
Frindal schrieb: > Ist das nicht bereits in JavaScript eingebaut? > > https://www.w3schools.com/jsref/jsref_eval.asp Nur im Browser-Javascript. Ist da unproblematisch(er), weil der Browser sowieso alles sandboxed, und der "böse" Code entweder vom Server oder vom User kommt, welche beide auch ohne "eval" mehr Rechte haben. Unter nodejs wäre das Äquivalent "vm.Script"&co., wobei ich mir nicht sicher bin, ob man dem wirklich untrusted Code anvertrauen kann...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.