我只想保护每次请求后显示的某些数字。这样的数字大约有30个。我本来打算生成图像来代替这些数字,但是如果图像没有像验证码那样扭曲,脚本就不能破译这些数字吗?此外,加载图像对文本的性能影响有多大?
15 回答
确保坏人无法获取您的数据的唯一方法是不与任何人共享。任何其他解决方案本质上都是与屏幕刮板进行军备竞赛。在某一时刻,你们中的一个人会发现军备竞赛的成本太高而无法继续。如果您共享的数据具有任何可感知的价值,那么屏幕抓取器可能会非常确定。
这是不可能的。
- 您使用 javascript 并加密页面,在解密后使用 document.write() 调用。我要么从浏览器的显示中抓取,要么通过 JS 引擎提供页面以获取输出。
- 你使用闪存。我可以戳入闪存文件并获取值。你在闪存中加密它们,我可以运行它,然后从解释器的显示器中获取输出作为图像序列。
- 你使用图像,我可以通过 OCR 提供它们。
你在军备竞赛中。你需要做的是让你的信息如此有用,你的页面如此易于使用,以至于你成为权威来源。定期更改输出格式以跟上进度也很方便,但屏幕抓取工具可以处理这种情况,除非您做出相当彻底的更改。激进的变化将用户赶走,因为页面对他们来说一直是陌生的。
您的图像解决方案不会有太大帮助,而且图像的效率要低得多。在 HTML 编码中,数字通常只有几个字节长。图像从几百字节开始,根据您想要的大小扩展到 1k 或更多。图像也不会以用户为其浏览器窗口选择的字体呈现,并且对使用辅助计算设备的人(视障人士)毫无用处。
除了图像,您还可以使用 JavaScript 或 Flash 显示数字。
您还可以使用 CSS 使用绝对或相对位置的各种组合来定位单个数字。您还可以使用 JavaScript 来帮助您创建这些 DIV。关键是要混淆得足够多,以至于变得非常困难。
另一种解决方案是使用分段或单个点的图像,并使用 CSS 重新构建数字的图像,有点像点阵显示。您可以使用这些绝对定位的 DIV 乱扔页面的源代码,并再次通过动态创建它们来使重构变得更加困难。
无论如何,您无法阻止确定的抓取工具获取数据:自动化 Web 浏览器并截取可提供给 OCR 的屏幕截图并不需要太多时间。无论如何,没有人愿意花一分钱手动获取数据。
关键是:你的对手(用户?)有多坚定。
这有点像软件保护业务:让事情变得足够困难以阻止偶然的“盗版者”并不是太难,而且总的来说这是一个相当不错的方法。
但是,如果您提供的数据有很大价值,那么您实际上无法采取任何措施来保护它。
你所能做的就是让它变得足够困难,以至于随便的“小偷”宁愿继续为你的服务付费,而不是规避它。
Javascript 可能是最容易实现的,但是您可以通过在无效数字上放置图层、将错误的数字混合到背景中或通过 css 使它们不可见来获得真正的创意并拥有大量数字,其中某些数字是可见的和半随机生成的类名。
生成包含这些数字的图像并显示图像。:-)
我不敢相信我正在推广一种常见的恶意软件脚本策略,但是......
您可以将数字编码为在运行时呈现的编码 Javascript。
我认为你们对这些解决方案过于敏感。Javascript、Capcha,甚至诉讼和 DMCA 流程都不能解决网络抓取和数据盗窃的复杂适应性问题。您不认为防止恶意机器人和网站抓取的“理想”解决方案将在实时主动缓解策略中发挥作用吗?非常类似于内容保护网络。就说吧。
例子:
IBM - IBM ISS 数据安全服务
蒸馏 - www.distil.it
你能提供更多关于你在做什么的细节吗?当然,创建图像而不是转储数字文本会降低性能,但是您每天这样做的频率如何?
使用 JavaScript 与使用文本相同。逆向工程很简单。
使用 Flash 使用动画数字。它可能不是万无一失的,但它会使其更难破解。
发布大量虚拟数字并使用外部 CSS 显示正确的数字怎么样?只要刮板不开始解析外部CSS。
不要输出数字,即前缀
echo $secretNumber;
与//
.
对于所有建议使用 Javascript 或 CSS 来混淆数字的人来说,可能有一种解决方法。Firefox 有一个名为 abduction 的插件。基本上它所做的是将页面作为图像保存到文件中。您可能可以修改此插件以保存图像,然后分析图像以找出试图隐藏的密码。
基本上,如果从页面上抓取这些数字有足够的动机,那么它就会完成。否则,只需发布一个常规号码,让您的用户更容易使用,这样他们就不必担心无法复制和粘贴号码,或者这种诡计导致的其他此类问题。
只需使用 CSS 盒子模型做一些意想不到和奇怪的事情(每次都不同)。强制他们实际使用浏览器支持的屏幕截图。
我认为这是不可能的,你可以让他们的工作更难(使用这里建议的图像)但这是你能做的,你不能阻止一个有决心的人获取数据,如果你不想要他们抓取你的数据,不要发布它,就这么简单......
假设这些数字经常更新(如果它们不更新,那么保护它们完全没有意义,因为人类可以手动转录它们),您可以通过限制来限制自动抓取。如果您可以限制您赢得的这些检查,而无需使用混淆,自动化脚本将不得不经常访问您的站点以检查更新。
有关节流的指示,请参阅此问题。