我可以从用户的浏览器中了解到哪些意想不到的事情?

What unexpected things can I learn about a user from their browser?

我正在给 class 的高中生演示网页可以通过他们的手机告诉他们意想不到的事情 - 即使他们没有登录或其他任何东西。到目前为止,我选择了一些大多数人都知道的事情,例如:

设备OS

特定手机(除非您使用 iPhone,否则它只是 iPhone)

语言设置

还有一些更晦涩的事情:

运营商(命中远程服务并返回 JSONP,因为 js 是 IP 天真)

电池电量/充电状态(直到今天我才知道你可以这样做)

你能想到我可以从 UA / Navigator 等中挖掘出的类似的酷/令人毛骨悚然的东西吗?其中大部分是 Android 或 iOS 下的 运行 Chrome(幸运的是,并非每个浏览器都支持电池)。主要活动是关于移动安全和网络钓鱼,所以我想坚持使用手机。

快速编辑:为清楚起见,我正在构建一个他们将访问的网站,该网站将实际演示这些功能 - 因此不幸的是,它们需要实施,至少在 Chrome 中,与计划/草稿相比.

你应该提到地理位置。一个称职的 javascript 库,例如MaxMind 或 Google 分析可用于精确定位用户的地理位置。

这些怎么样...

  • 您可以根据搜索历史记录他们的兴趣。
  • 他们访问的频率和访问地点。
  • 建立他们一天中什么时间访问的档案。
  • 在网站上花费的时间
  • 他们在哪些页面上花费的时间最多。
  • 基于热门区域的页面点击次数或鼠标治疗器所在位置的配置文件。
  • 您可以分析典型的用户行为。

这一切的结果是 - 推送数据个性化营销即所见即所得 您,作为个人(google 在他们的广告中经常这样做)

从网络钓鱼的角度来看,我认为最重要的是,有几件危险的事情:

网络钓鱼

  • 如果没有附加组件,如果您访问的地址有一个字母不同,浏览器通常不会警告您。即使 URL 方案禁止零宽度字符和其他 Unicode 脏话,您仍然可以监督 l(小写 L)、1(一)、I(大写 I) ).还有许多看起来像普通字母表的 unicode 字符。也许有一些关于 unicode 字符的黑名单,比如希腊字母。检查 this site to play around。您可以尝试使用希腊语 ο.
  • 创建一些域名,例如 whosebug.com
  • JavaScript can alter URL after domain name。但我已经好几年没见过可以为用户提供文件夹名称的托管服务了。尽管如此,看到 URL 没有重新加载的变化还是令人毛骨悚然:

    window.history.pushState("object or string", "Title", "/new-url");
    
  • 不确定这是否适用,但去年 HackADay.com 揭示了一个 hack,您可以在 link 上按下鼠标按钮后更改 <a> href,有效地更改目标 URL。但是话又说回来,您也可以使用 javascript...
  • 重定向浏览器

个人资料

  • 为此,我要做的第一件事是检查 MDN 上的 WindowDocument。这肯定会揭示一些很酷的东西,让电池电量信息变得微不足道:

    • Window:
      • Window.ondevicemotion - 执行它的建议。假设你也可以 Window.addEventListener("devicemotion", ...)
      • Window.ondevicelight - 这个非常令人毛骨悚然,但仅适用于 Firefox
      • Window.ondeviceorientation - 广泛支持 设备移动事件。想要近似用户行走的路径并将其绘制在 canvas 上?或者制作一个尖叫“把 fuking phone 放下。*”的应用程序,直到他们把它放在 table?
      • 此外,还有数百万种方法可以获取各种 屏幕属性 。其中一些被用来猜测 OS 版本,因为不同的 OS 有不同的菜单栏,占据不同的屏幕部分。
    • 文件:

      • document.referrer - 想跟踪您的用户?
      • 您可以通过创建以下元素来检测是否存在 广告拦截插件

        <div id="advertisment" 
          class="ad advertisment ads banner"
          style="pointer-events: none;position: absolute; opacity: 0;">NOTHING
        </div>
        

        然后获取 .getBoundingClientRect() 并声明非零维度。

    • 您可以检测文档何时被firebug检查。 (或者您可以在过去,当 firebug 实际上在 DOM 中添加元素以突出显示节点时)。这些元素在 Firebug 中是不可见的,但会触发 DOM 突变事件。
  • 如果用户确认,sound and video可以被记录
  • 我曾经创建了一个脚本,能够在服务器上传输所有 DOM 突变,让我可以实时观看其他用户使用网站。但不幸的是我没有把它完成到生产状态。但这就是我发现 firebug 问题的方式。
  • 还有其他技巧可以检查调试工具是否 运行。这些通常是各种技巧,尝试 google 一些东西。
  • 有没有想过您的用户是否启用了 CORS localhost HTTP 服务器 运行?我的意思是,这不值得一试吗?
  • WebWorkers 允许您在客户机上生成线程。您可以将其用于 分布式处理 或者只是 消耗电池电量 。由于它不直接影响 GUI 线程,他们不会注意到,直到为时已晚。这听起来也是生成 hask 破解和破解证书的好方法。
  • 您可以更改复制的文本,可能会向其中添加跨站点脚本攻击。好的技巧是用一堆空格来偏移你的脚本,这样它就不会在没有文本换行的典型文本编辑器中看到。
  • 使用Desktop notification,你可以假装你是杀毒软件,windows更新...