javascript - 如何保护 Node webkit 应用程序上的字体?

标签 javascript node.js fonts url-routing node-webkit

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

我有办法加密字体文件。您可以将字体转换为 base64 并将其分配给带有闭包的 javascript 库中的局部变量。 javascript 文件被编译为二进制文件,最终用户无法读取。

将 base64 值设置为样式属性可能会将字体作为 base64 值公开给 DOM。我想做的是创建一个临时路由到我从私有(private) base64 值呈现的字体文件,然后在访问后删除该路由。我可以看到如何将此作为 node.js 应用程序实现,但我是 Node-Webkit 的新手,没有看到有关路由器的任何文档。

托管字体解决方案似乎允许一次性访问字体文件,因此用户无法下载文件。那么Node-Webkit是否具备进行路由的能力呢?

最佳答案

首先:欢迎使用互联网,您无法阻止人们使用您发送给他们的数据。要么你不向他们发送数据,要么你接受这样一个事实,即一旦数据在他们的计算机上,他们就可以随心所欲地使用它(如果你希望人们能够通过浏览器连接到你的内容,浏览器需要下载和解码内容,这意味着您不能停止分发,事实上在这种情况下是分发者)。

即使您将字体加载与 session 标识符相关联(例如,您的用户必须首先点击页面 URL,这会设置一个 cookie 值,然后在他们尝试下载 webfont 时结合 IP 进行检查cookie 最初是设置的)他们只需要下载您的字体一次 就可以轻松访问它并根据需要使用它。它要么存在于浏览器的缓存目录中,要么可以通过 JavaScript 访问(例如通过挖掘 document.stylesheets),这意味着它被简单地转换为真实数据并保存到磁盘(例如 window.open使用二进制 mimetype 会导致浏览器弹出保存到文件对话框)。

尽管你尽了最大的努力,我还是下载了你的字体:如果你能把数据发给我,而我们为交换选择的技术是 HTTP(S),我将能够访问这些数据,无论您进一步限制如何何时我可以获得该数据。我只需要得到它一次。

所以:不要将精力集中在如何或何时。假设您的用户可以访问您的字体,即使只有一次,而是将您的精力集中在他们可以使用您的字体做什么,因为那是重要得多。您可以做几件事来确保您分发的内容在您的内容之外几乎毫无用处。例如:

  1. 不要使用完整字体,而要使用子集,这样您的用户只能获得部分字体,其中严格包含呈现您自己的内容所需的那些字形。这严重限制了其他人可以做的事情。您可以随心所欲地使用它,为每个页面甚至页面的每个部分提供专用的子集字体。
  2. 将字体的 fsType 标志设置为不允许安装。这样人们将获得您的字体,但除了在网络上,他们无法进一步使用它们
  3. 确保在字体本身正确标记字体许可证,这样如果人们确实使用您的字体,您就有法律追索权,并且可以起诉他们在“个人使用”上下文。

但是,如果你也想利用缓存,你不想做(1),而(2)和(3)足以让你有法律依据去追查使用你字体的人(s).

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

毕竟,如果 TypeKit 可以做到这一点,那么您也可以。 (这是一个额外的建议:如果您可以使用已建立的现有解决方案,请不要推出自己的解决方案。字体是否可通过 Typekit 或类似工具获得?改用它们并省去重新发明轮子的麻烦)

关于javascript - 如何保护 Node webkit 应用程序上的字体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29497604/

相关文章:

javascript - 如何从对象数组中删除元素?

Javascript,读取文件夹中的文件

javascript - 谷歌地图 infoWindow 将文字显示为白色,可以突出显示以查看内容

javascript - 如何在使用 create-react-app 创建的应用程序中使用具有访问 token 的 API

android - 如何在 android studio 中缩放字体大小?

css - 如何在设置css font-family时获取网页上div的真实字体名称?

javascript - 滚动条最初在 highstock 中不可见

node.js - Node , Mongoose : Remove json element from query result with delete

css - 如何在 CSS 中使用 Helvetica Neue Condensed Bold?

jquery - html-pdf : css and js files do not appear to be processing