【发布时间】:2016-07-27 11:34:06
【问题描述】:
让我们假设创建者制作了一个网络应用程序并出于透明度的原因提供其源代码。假设使用的所有数据都对公众开放,客户怎么会知道远程服务器上正在执行的代码(处理数据)与提供给他的代码相同。有没有办法将提供的脚本与执行的脚本进行比较和验证?更好的是,客户端是否可以在不影响安全性的情况下以只读模式查看所有服务器端代码?我最感兴趣的是使用面向 Web 的语言(如 php、ror、nodejs、python 等)的合理性
【问题讨论】:
让我们假设创建者制作了一个网络应用程序并出于透明度的原因提供其源代码。假设使用的所有数据都对公众开放,客户怎么会知道远程服务器上正在执行的代码(处理数据)与提供给他的代码相同。有没有办法将提供的脚本与执行的脚本进行比较和验证?更好的是,客户端是否可以在不影响安全性的情况下以只读模式查看所有服务器端代码?我最感兴趣的是使用面向 Web 的语言(如 php、ror、nodejs、python 等)的合理性
【问题讨论】:
我不太明白您为什么要这样做,但是如果您使用 PHP 这样做,您可以强制例如 apache 将 *.php 文件解析为简单的文本文件。这通常发生在有人在服务器上有 PHP 代码但实际上并没有运行 PHP 时,使 Apache 只显示代码。
这实际上取决于您尝试在其上执行此操作的系统。将代码解析为文本并不难。您可以在 php、ror、nodejs、python 等中编写脚本,将源代码读取为字符串,然后输出该字符串。 PHP 中的示例是编写一个使用PHP fopen 的快速脚本。
问题是,如果服务器向您显示一些代码并说“这完全是我正在执行的”,它并不能证明任何事情。
另一种选择可能是使用校验和做某事,但服务器再次声称它正在正确执行代码,在您的用例中,在我看来您不信任服务器。
构建安全服务器,使用 HTTPS 传输数据,您应该能够信任该服务器。
【讨论】: