问题标签 [fingerprinting]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 设备指纹识别(Android 和 iOS)
即使在我的应用程序被卸载并再次安装后,我也需要一种唯一识别 android 和 iOS 设备的方法。ANDROID_ID 和 UUID 都不起作用。也许有一些专门用于此任务的库?
javascript - 在发送到服务器之前编辑数据(特别是浏览器指纹)?
我一直在研究浏览器指纹识别并获得了该领域的一些知识。浏览器指纹的演示可以在panopticlick.eff.org找到。然而,我担心的一个问题是它们是多么容易被操纵,或者我认为是这样。据我了解,有两种方法可以操纵它们。
1. 直接操作它们
这是给定的,要更改指纹,您只需在浏览器中欺骗此类指纹脚本收集的值。例如,您可以欺骗:
a) 其他标头中的用户代理字符串。
b) JS-Elements-and-API's通过使用 ObjectDefineProperty 来编辑它们的值
c)更具体的指纹识别方法,例如通过安装操作指纹的扩展程序进行 Canvas 指纹识别
等等......
然而,这种方法对诸如WebGL 指纹之类的主动指纹识别方法不是很有效,因为它们不容易被欺骗。
但第二种方法更有趣一些,令人失望的是,关于它是否合理的信息并不多。
2. 在发送到服务器之前编辑数据
所以基本上,在脚本收集了所有信息之后,它(我在这里猜测)创建一个哈希然后将其发送到服务器,或者它将数据发送到服务器并在那里创建一个哈希。现在,如果出于恶意目的,我决心在特定站点上破坏浏览器指纹识别,我所要做的就是启动像Fiddler这样的应用程序,找到(可能)通过其将数据发送到服务器的 POST,然后编辑数据。对于那些不知道 Fiddler 是什么的人,它是一个应用程序,可以路由从代理通过您的网络发出的所有请求和响应,因此您可以在将任何请求发送到浏览器/服务器之前查看和编辑任何请求。似乎很容易。
我的问题
现在,因为我对所有请求-响应的东西都没有太多了解,这让我怀疑我的方法 2。所以最后我想问的是:
1)我对如何将浏览器指纹发送到服务器的了解是否正确?即,通过 POST。我相信应该是因为这是将数据传输到服务器的唯一方法?
2)如果可能,那么站点可以实施(或已经实施)什么样的对策来确保数据在发送到服务器之前没有被更改,或者至少,使它更难要完成吗?
3)是否有可靠的方法来捕捉这些方法?
ssl - 在 ESP8266 (Arduino IDE) 上使用 BearSSL 进行指纹验证
我正在使用 Arduino 提供的库中的 BearSSL,即 WiFiSecureClient 类。我采用参考实现来获得一个简单的 Python 实现服务器和作为客户端的 ESP8266 板之间的安全 TCP 连接。
我使用 OpenSSL 导出了密钥和证书,并使用它们来提供 Python 套接字 SSL 包装器。一切正常,可以交换消息,但是 WifiSecureClient 无法验证证书。这里是节点的部分代码:
如前所述,我可以发送和接收消息(我不知道它们是加密的还是未加密的回退)但是步骤
总是失败。指纹是使用 OpenSSL 作为 SHA1 密钥导出的。我通过用另一台 PC 连接到服务器、获取证书并重新计算其指纹来仔细检查了这一点。如果我尝试联系 api.github.com 之类的公共服务器(在示例中是默认设置),则代码可以正常工作。如您所见,我已经通过调用 BearSSL 的适当 API 方法来允许使用自签名证书。
有什么我错过的吗,例如我是否必须拥有一个完整的钥匙链或其他东西?
提前致谢!
firefox - 为什么我的浏览器会共享已安装的字体?
浏览器不共享 http 请求中的字体。不过,可以通过 javascript 分析字体。
是否可以阻止 javascript 分析我安装的字体?
老问题:
访问网站时,从我的浏览器发送到服务器的请求包含我系统上安装的字体。
为什么会这样?为什么浏览器会为第三方请求(如图像或脚本)共享已安装的字体?
Afaik 许多网站只会从互联网上下载任何字体以正确显示网站。所以服务器没有必要知道本地安装的字体。此外,我怀疑任何基于可用字体的设计个性化(我错了吗?)。
是否有可能阻止这些数据的广播,例如防止指纹识别?
php - 用 libsodium 散列信用卡
我需要存储我用户的信用卡哈希(指纹)以供将来识别,以便始终轻松显示他们的订单,而无需通过我的支付提供商的卡查找。
我需要一个非常短的 PHP 算法,但sodium_crypto_shorthash
它不是抗碰撞的,这让我怀疑它。
是否有任何安全的无冲突PHP 7哈希算法可以在 bin2hex 之后输出最大 12 长度?
cordova - 使指纹独一无二的一件或多件事情?
我有一个用科尔多瓦写的应用程序。我想用用户数据制作指纹以跟踪安装。单击时,我们进行哈希处理。如果此哈希值与安装中的哈希值相等.. 没关系,安装时计数 + 1。我尝试使用 ip...lat..lng...,但 ip 正在从移动网络更改,并且单击的哈希值与安装的哈希值不相等。我也尝试使用客户端 js(但用户代理不同,因为我在使用 WebView 的 cordova InAppBrowser 插件中使用)。有时分辨率会有所不同..取决于我认为使用的浏览器。
我可以用什么来使指纹独一无二?
javascript - 绕过给定网站上的指纹2.js
我不是在互联网上被跟踪和指纹.js 的最大粉丝,请参阅这里https://github.com/Valve/fingerprintjs2,不幸的是这样做做得很好。我已经在谷歌上搜索了很长时间,但我没有找到一个好的解决方案,这就是我在这里写的原因。
因为只是禁用 JavaScript 不是一个选项,因为它或多或少会破坏我试图研究如何混淆指纹的所有内容,以便我可以在需要时更改 I,因此我可以在它之后挂钩到网站的 JavaScript已经完成了fingerprint2.js,但在它被发送回服务器之前?不幸的是,我对这个领域并不精通,所以我不完全确定我的建议是否可行。
任何其他有效规避这一点的方式也将受到高度赞赏。
编辑:或者是否可以覆盖部分算法?
java - Android - 怀疑没有传感器的指纹
我做了很多研究,找不到我需要的东西。
我需要使用没有指纹传感器的设备制作指纹,例如三星 S5或摩托罗拉 G3等旧设备......没有生物识别传感器的设备。
我想知道我是否有触摸屏或相机......
有什么办法可以做到吗?
或者你可以指出一些图书馆?
data-structures - 快速结构识别
我想知道一种聪明而有效的方法来区分另一个数据结构。
如果我们假设数据结构以 JSON 树的形式存储在一个数组中,那么问题可以总结如下:
我想出的可能解决方案包括:
- 手工制作的硬编码规则,例如
if 'another_key' in data
,但是当数据条目的数量和不同类型的数量增加时,维护起来会很繁重。 - 结构指纹:对除叶子之外的整个树进行散列,并使用散列来识别唯一的数据结构。
"data" : [ ... ]
如果条目的数量是固定的,这将是一个很好的解决方案。 - Schemas ( JSON Schema , XML Schema , ...),但我觉得这对于所讨论的问题来说有点“过度设计”。
您是否知道解决此问题和类似问题的更好方法?
编辑:更多示例
想象一下,有一个(损坏的)序列化 aBook[] books
没有关于它是什么类型的书并且需要恢复原始格式(或等效的东西)的信息。
另外,为了简单起见,我使用了 C#,这是一个普遍的问题。