Es ist relativ einfach, einige Benutzer eingegebenen Code zu greifen und es mit JavaScript auszuführen. Im Wesentlichen werden Sie den Code von ACE:
dann verwenden Sie Javascript, um es auszuführen. Auf der einfachsten Ebene können Sie einfach tun:
eval(code);
aber Sie probably don't want to use eval()
. Stattdessen könnten Sie etwas tun wie:
// grabbed from https://stackoverflow.com/questions/6432984/adding-script-element-to-the-dom-and-have-the-javascript-run
var script = document.createElement('script');
try {
script.appendChild(document.createTextNode(code));
document.body.appendChild(script);
} catch (e) {
script.text = code;
document.body.appendChild(script);
}
Dies wird funktionieren. Es wird jedoch weiterhin einige Probleme verursachen, da der Benutzercode sich auf Ihre Umgebung auswirken kann. In diesem Szenario ist es aus Sicherheitssicht möglicherweise nicht schrecklich (es sei denn, der Benutzer kann seinen Code teilen), aber es wäre verwirrend. Aus diesem Grund möchten Sie sandbox your code.
This answer explains sandboxing client side javascript, mit window.postMessage
können Sie Javascript an den Sandboxed iframe senden und dort ausgewertet werden.
Wenn Sie diese Server-Seite erstellen und Knotencode ausführen möchten, müssen Sie Sandboxing anders durchführen. Auf einem Server spielt das Sandboxing eine größere Rolle, da der Benutzer viel mehr mit Javascript zu tun hat und böswillig mit dem Server interagieren kann. Glücklicherweise gibt es a few sandboxes for Node that should help.
Danke Nick ich schätze es. – inoabrian
vielen Dank !!! –