如何保护节点的webkit应用程序的字体?

我想创build一个Node-Webkit应用程序,但避免重新分配字体文件。 我想到了一些方法。 我正在考虑托pipe字体解决scheme使用的模型,其中包含字体文件的临时URL被托pipe。

我有一种方法来encryption字体文件。 您可以将字体转换为base64将其分配给JavaScript库中的一个局部variables与闭包。 JavaScript文件被编译为二进制文件,不能被最终用户读取。

将base64值设置为style属性可能会将该字体作为base64值暴露给DOM。 我想要做的是创build一个临时路由到字体文件,我从私有的base64值呈现,然后删除路由一旦被访问。 我可以看到如何实现这个作为node.js应用程序,但我是新的Node-Webkit,并没有看到路由器上的任何文档。

似乎托pipe字体解决scheme允许一次性访问字体文件,以便用户不能下载文件。 那么Node-Webkit是否有能力执行路由?

首先要做的是:欢迎上网,不能阻止用户使用你发送的数据。 或者你不发送数据,或者你接受这样一个事实:一旦数据在他们的计算机上,他们就可以用它来做任何事情(如果你希望人们能够通过浏览器连接到你的内容,浏览器需要下载和解码内容,这意味着你不能停止分发,实际上是这种情况下的分销商)。

即使您将字体加载到会话标识符(例如,您的用户必须首先点击页面URL,它会设置一个cookie值,然后在他们尝试下载webfont时结合cookie的IP最初设置),他们只需要下载字体一次,以平凡的方式访问它,并用它做什么,他们想要的。 它要么住在浏览器的caching目录中,要么通过JavaScript访问(例如挖掘document.stylesheets ),这意味着它被简单地转换为真实的数据并保存到磁盘(例如,一个带有二进制MIMEtypes的window.open会导致浏览器popup一个保存到文件对话框)。

在那里,尽pipe尽了最大的努力,我只是下载了你的字体:如果你能把数据发送给我,而且我们为这个交换select的技术是HTTP(S),我将能够访问这些数据,不pipe你多less进一步限制我如何何时可以得到这些数据。 我只需要得到它一次。

所以:不要把注意力集中在如何或什么时候。 假设你的用户可以访问你的字体(即使只有一次),而只要把精力集中在你的字体上,一旦他们做了就可以做,因为这更重要。 有几件事情可以做,以确保您分发的内容是在你的内容之外是无用的。 例如:

  1. 不要使用完整的字体,使用子集,以便您的用户只能得到包含严格的这些字形,以呈现您自己的内容所需的部分字体。 这严重限制了别人可以做的事情。 您可以随心所欲地为每个页面提供专门的子集字体,甚至可以为页面的每个部分提供专用子集字体。
  2. 为您的字体设置fsType标志以禁止安装。 这样,人们会得到你的字体,但除了在networking上,他们不能进一步使用它们
  3. 请务必正确标记字体本身的字体许可证,以便在人们使用字体的情况下,您有法律追索权,并可以在“个人使用”范围之外起诉您的字体。

然而,如果你也想利用caching,你不想做(1),(2)和(3)就足够给你一个法律依据,去追求使用你的字体的人, 。

底线:防止用户“获取”您的数据是浪费时间。 这是互联网,你的用户获取你的数据完全是技术的重点。 而是专注于确保他们获得的内容仅在您的内容的上下文中有用。

毕竟,如果TypeKit可以使这个工作,你也可以。 (这将是一个额外的build议:如果你可以使用现有的解决scheme,不要推出你自己的解决scheme。字体是否可以通过Typekit或类似的东西?可以使用它们,而不必重新发明轮子的麻烦)

你可以encryption它,然后用节点本地方法解密它: http : //lollyrock.com/articles/nodejs-encryption/

你也可以压缩所有的资产到一个文件,并将其重命名为“package.nw”,铬可执行文件将运行它(我知道这不是一个可靠的安全措施)再加上该文件,你也可以将它与nw.exe文件,那么最终只有一个文件是可执行文件,所以普通用户将无法看到您的文件,并且您的package.json文件以某种方式被保护,从而防止用户更改configuration并查看您的文件/资产。 https://github.com/nwjs/nw.js/wiki/How-to-package-and-distribute-your-apps#step-2a-put-your-app-with-nw-executable