这是上下文:假设有一个插件P,可以在Mozilla Firefox附加站点上找到。
考虑修改P的恶意用户,例如,使其偏离正常行为。我的第一个问题是:
现在考虑一个与插件P交互的网站的情况。例如,只有当插件是原始的(尚未修改)时,该网站才允许访问Web内容。
我的第二个问题是:
答案 0 :(得分:1)
您要求DRM,即能够验证在通用计算硬件上运行的远程软件正在执行它自己声称正在执行的代码。
这是不可能的,因为索赔人总是可以在某种形式的模拟器中撒谎并运行用于交互式身份验证的任何代码段。
根据您实际尝试实现的目标,您应该使用特定于用户的身份验证,即将站点访问某些令牌或密码而不是插件,或者将插件的所有输入视为不受信任,并根据协议验证它们他们应该遵循。
简而言之:验证数据,而不是代码。
答案 1 :(得分:1)
从AMO下载的所有扩展程序均为cryptographically signed by Mozilla(link 2)。如果以任何方式修改扩展程序,Firefox将自动检测到已发生更改并将禁用该加载项。
但是,如果用户正在运行Firefox Developer Edition,Firefox Nightly,Unbranded Beta, or Unbranded Release,则他们可以更改首选项,以便不会禁用修改后的扩展名。仍将检测到修改,并且用户通知about:addons
( Ctrl - Shif - A , Cmd < / kbd> - Shif - OSX上的 A 。用户也可以下载Firefox的源代码并编译自己的版本,禁用附加签名检查。
临时插件
Firefox的正常版本和测试版不允许用户永久安装和运行尚未签名的扩展程序,或者签名后更改扩展名的选项。但是,它们与所有其他版本一起允许将扩展名加载为temporary add-on,即使未签名或已更改。这使得无法在这些版本的Firefox中重新启动浏览器的无签名附加组件。
<强>摘要强>
Mozilla歌唱附加组件旨在防止由恶意用户下载和安装的恶意附件或Mozilla未经审核的附加组件。因此,要安装未签名或已更改的附加组件,用户必须跳过额外的,不方便的步骤(不使用品牌发行版或测试版Firefox,或使用临时附加组件安装)。但是,签名不会,也不是为了阻止用户有意更改加载项而无法运行加载项。
不,假设有意隐藏对扩展的修改,网页无法保证检测到发生了更改。修改后的扩展名可以欺骗原始扩展代码提供给网页的任何信息。你可以做到这一点很困难,但无法保证。
您尚未提及为什么您希望您的网站能够检测到这些更改。因此,在不猜测目的的情况下,不可能为您提供合理的替代方案。