【问题标题】:Is it possible to run C# code from the browser that does work on the user's computer是否可以从在用户计算机上运行的浏览器运行 C# 代码
【发布时间】:2021-06-22 12:32:09
【问题描述】:

我知道答案几乎肯定是否定的,但我想知道您是否可以从用户计算机上的服务器运行代码(在他们的许可下)

我有一个在远程 IIS 上运行的 ASP.NET 应用程序。我希望应用程序能够访问用户计算机上的 PCI 板并对其进行一些工作。据我所知,仅在浏览器中运行 JS 是无法做到这一点的。

我知道这对用户来说是一个巨大的安全漏洞,但他们可以根据需要选择加入或退出。

另一种选择是让应用程序已经在用户的计算机上,并在必要时由服务器运行,但我只是想知道这是否可能。

【问题讨论】:

  • 您要么在服务器上、在用户的浏览器(JavaScript 或 WASM c#)中运行代码,要么给用户一个 exe。
  • 如果您希望服务器控制安装在用户机器上的应用程序,您需要在应用程序和服务器之间建立通信通道。让您的应用程序作为 Windows 服务或在 Windows 启动时运行,并打开 TCP 连接或其他任何东西,服务器可以通过该连接向客户端发送命令并接收数据作为回报。或者让应用通过 HTTP 轮询服务器以进行工作。
  • 您应该看看SignalRgRPC。这两件事都可以在受限且安全的区域内控制方法的执行。

标签: c# asp.net browser websecurity


【解决方案1】:

这非常简单,假设您可以访问用户的 PC 并且可以在他的机器上安装一些东西(这就是它没有安全问题的原因)。 您必须注册一个自定义 URI 方案,这意味着您将某个程序与您指定的协议相关联。

See here

协议类似于 http。您可以创建自己的协议,例如“myxyz”,并在您的网页中使用像 myxyz://blah/blah 这样的 URL。

每当调用带有您的协议的 URL 时,您与该协议关联的程序就会启动。 URL 的其余部分将作为命令行参数传递给您的程序。

【讨论】:

  • 每当调用带有您的协议的 URL 时。这会被用户的浏览器调用吗,比如说当他们点击一个按钮时将他们重定向到这个 url?
  • OP 想要触发可执行文件按需读取一些数据。在您的场景中,用户必须在浏览器中点击链接。
猜你喜欢
  • 1970-01-01
  • 2020-11-06
  • 2011-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-18
  • 1970-01-01
相关资源
最近更新 更多