Ich möchte, dass ein Benutzer eine Zeichenfolge für eine Formel für y
als Funktion von x
, z. B.
Ich möchte dann diesen Ausdruck an einigen Punkten, z. für Werte von x <- 1:0.1:100
.
Ich weiß, dass ich tun kann:
%Vor% Dies lässt jedoch meinen Computer für Angriffe offen, wenn der Benutzer fn
liefert, was keine Formel
Gibt es alternative Möglichkeiten, um das zu erreichen, was ich tun möchte?
Eine der coolsten Funktionen von R ist, dass es seine eigene Sprache verarbeiten kann, so dass Sie eine Funktions-Whitelist erstellen und Ausdrücke dagegen prüfen können:
%Vor% Wir definieren dann eine Whitelist der zulässigen Funktionen. Es ist sehr wichtig, dass Sie sehr vorsichtig sind, was Sie hier zulassen. Insbesondere, wenn Sie parse
, eval
oder irgendwelche Funktionen mit möglichen unangenehmen Nebenwirkungen zulassen ( system
, unlink
, usw.), öffnen Sie Ihr System für Angriffe.
Und wir testen:
%Vor%Keine ausdrücklichen oder stillschweigenden Garantien. Es mag einen Weg geben, dies zu hacken, an den ich nicht gedacht habe, also stellen Sie es nicht ohne eine gründliche Untersuchung auf einen öffentlich zugänglichen Server, aber ich denke, das könnte einfach funktionieren.
Beachten Sie, dass, wenn jemand einen Ausdruck bereitstellen kann, der parse
selbst hackt, Sie auf diese Weise kompromittiert werden können.
EDIT: Ben Bolker schlug einen cleveren Trick vor, um das zu hacken, aber diese Funktion ist robust:
%Vor%Tags und Links r