Html 可以包含嵌入其中的少量 Javascript(例如在onclick
事件处理程序中定义)。
如果我使用像 C# 这样的 dotNet 语言编写 Html 浏览器,我可以使用哪些技术或 API 来运行这样的 Javascript 片段,因为我直到运行时才收到它(并将其作为字符串数据接收,而不是作为可执行文件接收代码)?
如果要运行的代码是 C# 片段而不是 Javascript,是更容易还是更难?
是否有任何技术不需要我的代码具有不寻常的特权?例如,像
CodeCompiler.FromSource
requires之类的方法SecurityPermissionFlag.UnmanagedCode
(在我看来这太过分了:我不明白为什么编译代码如此危险)。如果我控制服务器端和客户端代码,我还可以考虑在服务器而不是客户端上编译这些脚本片段,然后将其作为预编译代码发送到客户端执行。有没有办法通过网络将此类代码(可能是 dotNet 程序集)发送到客户端,让客户端代码从网络将其接收到客户端 RAM,并在客户端调用它而不将其存储为客户端磁盘驱动器上的文件?
编辑
我已经回答了前三个问题:我已经接受了编译需要高特权的事实。我不明白为什么;也许(尽管我认为这不是一个非常有说服力的理由)这是因为编译器是使用非托管代码实现的。当他们使用托管代码重新实现编译器时,也许这会改变,也许是在“C# 版本 5”时间范围内。无论如何,无论出于何种原因,它似乎就是这样,并且没有解决方法(其他类似的 API,但需要较少的权限)。
那么我剩下的问题是如何从一台机器到另一台机器获取一个组装实例。当我有时间时,我会找出不受信任的代码是否可以运行该Assembly.Load(byte[] rawAssembly)
方法。