
安全编码技术。让我们来谈谈 "窃听"。
Tapjacking,是 "tap "和 "劫持 "的组合,就是这个意思。这是一种攻击,攻击者劫持用户的点击,诱使他做一些他不打算做的事情。那么,它是如何工作的,我们如何防止它?
我们的故事从屏幕覆盖开始。屏幕覆盖,或如谷歌所称,使用TYPE_APPLICATION_OVERLAY类型的窗口。 这些是绘制在其他应用程序之上的窗口,通常只遮挡屏幕的一部分。当一个应用程序请求新的权限时,这些窗口经常被使用(如下面的示例图片)。

这实际上是一个很酷很有趣的功能,越来越多的应用程序开始使用它,想想Facebook的聊天气泡,或者谷歌地图在你屏幕一角的导航,就像下面的截图。

然而,这些覆盖物也存在一些安全风险。任何活动的屏幕叠加都可以监听轻拍,否则Facebook怎么会知道我们轻拍或拖动了泡沫?这使得应用程序可以监视你,并有可能窃取密码和信用卡数据。
再进一步,这就是 "窃听 "一词的由来,覆盖层可以在其他应用程序上绘制东西,欺骗用户执行不同的动作。用户认为他是在与覆盖层互动,但实际上,他的点击也在底层应用中执行动作。这样一来,覆盖层可以欺骗你启用某些权限,或改变一些危险的设置,正如这个古老的YouTube视频所展示的那样。
上面的演示视频是2010年上传到YouTube的,所以是在较早版本的Android上完成的。但这种攻击在今天仍有意义,因为在新版本的安卓系统(如Nougat和Marshmallow)中出现了允许窃取的漏洞。
那么你能做些什么呢?作为一个用户,重要的是意识到这些覆盖的后果,并注意使用它的应用程序。从API级别23(Android 6.0 Marshmallow)开始,这已经成为一个必须由用户明确授予的权限。然而,这使得50%的安卓用户仍然很脆弱。你仍然可以在 "显示在其他应用程序之上 "的设置中检查哪些应用程序使用了这个权限。
作为开发者,我们有责任确保用户的操作是在用户完全知情和同意的情况下进行的。安卓系统为你的视图提供了一个设置,它的作用就是这样,叫做 filterTouchesWhenObscured. 当它被启用时,只要视图窗口被另一个可见窗口遮挡,框架就会丢弃收到的触控。就这么简单,把 filterTouchesWhenObscured 为 "true",你的应用程序就不会被窃听。
祝您好运,下周见!
有时,应用程序必须能够验证一个行动是在用户完全知情和同意的情况下进行的,如授予许可请求、进行购买或点击广告。不幸的是,一个恶意的应用程序可以通过隐瞒视图的预期目的,试图欺骗用户,使其在不知情的情况下执行这些行动。
https://developer.android.com/reference/android/view/View.html


Tapjacking,是 "tap "和 "劫持 "的组合,就是这个意思。这是一种攻击,攻击者劫持用户的点击,诱使他做一些他不打算做的事情。那么,它是如何工作的,我们如何防止它?
我们的故事从屏幕覆盖开始。屏幕覆盖,或如谷歌所称,使用TYPE_APPLICATION_OVERLAY类型的窗口。 这些是绘制在其他应用程序之上的窗口,通常只遮挡屏幕的一部分。当一个应用程序请求新的权限时,这些窗口经常被使用(如下面的示例图片)。

这实际上是一个很酷很有趣的功能,越来越多的应用程序开始使用它,想想Facebook的聊天气泡,或者谷歌地图在你屏幕一角的导航,就像下面的截图。

然而,这些覆盖物也存在一些安全风险。任何活动的屏幕叠加都可以监听轻拍,否则Facebook怎么会知道我们轻拍或拖动了泡沫?这使得应用程序可以监视你,并有可能窃取密码和信用卡数据。
再进一步,这就是 "窃听 "一词的由来,覆盖层可以在其他应用程序上绘制东西,欺骗用户执行不同的动作。用户认为他是在与覆盖层互动,但实际上,他的点击也在底层应用中执行动作。这样一来,覆盖层可以欺骗你启用某些权限,或改变一些危险的设置,正如这个古老的YouTube视频所展示的那样。
上面的演示视频是2010年上传到YouTube的,所以是在较早版本的Android上完成的。但这种攻击在今天仍有意义,因为在新版本的安卓系统(如Nougat和Marshmallow)中出现了允许窃取的漏洞。
那么你能做些什么呢?作为一个用户,重要的是意识到这些覆盖的后果,并注意使用它的应用程序。从API级别23(Android 6.0 Marshmallow)开始,这已经成为一个必须由用户明确授予的权限。然而,这使得50%的安卓用户仍然很脆弱。你仍然可以在 "显示在其他应用程序之上 "的设置中检查哪些应用程序使用了这个权限。
作为开发者,我们有责任确保用户的操作是在用户完全知情和同意的情况下进行的。安卓系统为你的视图提供了一个设置,它的作用就是这样,叫做 filterTouchesWhenObscured. 当它被启用时,只要视图窗口被另一个可见窗口遮挡,框架就会丢弃收到的触控。就这么简单,把 filterTouchesWhenObscured 为 "true",你的应用程序就不会被窃听。
祝您好运,下周见!
有时,应用程序必须能够验证一个行动是在用户完全知情和同意的情况下进行的,如授予许可请求、进行购买或点击广告。不幸的是,一个恶意的应用程序可以通过隐瞒视图的预期目的,试图欺骗用户,使其在不知情的情况下执行这些行动。
https://developer.android.com/reference/android/view/View.html

Tapjacking,是 "tap "和 "劫持 "的组合,就是这个意思。这是一种攻击,攻击者劫持用户的点击,诱使他做一些他不打算做的事情。那么,它是如何工作的,我们如何防止它?
我们的故事从屏幕覆盖开始。屏幕覆盖,或如谷歌所称,使用TYPE_APPLICATION_OVERLAY类型的窗口。 这些是绘制在其他应用程序之上的窗口,通常只遮挡屏幕的一部分。当一个应用程序请求新的权限时,这些窗口经常被使用(如下面的示例图片)。

这实际上是一个很酷很有趣的功能,越来越多的应用程序开始使用它,想想Facebook的聊天气泡,或者谷歌地图在你屏幕一角的导航,就像下面的截图。

然而,这些覆盖物也存在一些安全风险。任何活动的屏幕叠加都可以监听轻拍,否则Facebook怎么会知道我们轻拍或拖动了泡沫?这使得应用程序可以监视你,并有可能窃取密码和信用卡数据。
再进一步,这就是 "窃听 "一词的由来,覆盖层可以在其他应用程序上绘制东西,欺骗用户执行不同的动作。用户认为他是在与覆盖层互动,但实际上,他的点击也在底层应用中执行动作。这样一来,覆盖层可以欺骗你启用某些权限,或改变一些危险的设置,正如这个古老的YouTube视频所展示的那样。
上面的演示视频是2010年上传到YouTube的,所以是在较早版本的Android上完成的。但这种攻击在今天仍有意义,因为在新版本的安卓系统(如Nougat和Marshmallow)中出现了允许窃取的漏洞。
那么你能做些什么呢?作为一个用户,重要的是意识到这些覆盖的后果,并注意使用它的应用程序。从API级别23(Android 6.0 Marshmallow)开始,这已经成为一个必须由用户明确授予的权限。然而,这使得50%的安卓用户仍然很脆弱。你仍然可以在 "显示在其他应用程序之上 "的设置中检查哪些应用程序使用了这个权限。
作为开发者,我们有责任确保用户的操作是在用户完全知情和同意的情况下进行的。安卓系统为你的视图提供了一个设置,它的作用就是这样,叫做 filterTouchesWhenObscured. 当它被启用时,只要视图窗口被另一个可见窗口遮挡,框架就会丢弃收到的触控。就这么简单,把 filterTouchesWhenObscured 为 "true",你的应用程序就不会被窃听。
祝您好运,下周见!
有时,应用程序必须能够验证一个行动是在用户完全知情和同意的情况下进行的,如授予许可请求、进行购买或点击广告。不幸的是,一个恶意的应用程序可以通过隐瞒视图的预期目的,试图欺骗用户,使其在不知情的情况下执行这些行动。
https://developer.android.com/reference/android/view/View.html
Tapjacking,是 "tap "和 "劫持 "的组合,就是这个意思。这是一种攻击,攻击者劫持用户的点击,诱使他做一些他不打算做的事情。那么,它是如何工作的,我们如何防止它?
我们的故事从屏幕覆盖开始。屏幕覆盖,或如谷歌所称,使用TYPE_APPLICATION_OVERLAY类型的窗口。 这些是绘制在其他应用程序之上的窗口,通常只遮挡屏幕的一部分。当一个应用程序请求新的权限时,这些窗口经常被使用(如下面的示例图片)。

这实际上是一个很酷很有趣的功能,越来越多的应用程序开始使用它,想想Facebook的聊天气泡,或者谷歌地图在你屏幕一角的导航,就像下面的截图。

然而,这些覆盖物也存在一些安全风险。任何活动的屏幕叠加都可以监听轻拍,否则Facebook怎么会知道我们轻拍或拖动了泡沫?这使得应用程序可以监视你,并有可能窃取密码和信用卡数据。
再进一步,这就是 "窃听 "一词的由来,覆盖层可以在其他应用程序上绘制东西,欺骗用户执行不同的动作。用户认为他是在与覆盖层互动,但实际上,他的点击也在底层应用中执行动作。这样一来,覆盖层可以欺骗你启用某些权限,或改变一些危险的设置,正如这个古老的YouTube视频所展示的那样。
上面的演示视频是2010年上传到YouTube的,所以是在较早版本的Android上完成的。但这种攻击在今天仍有意义,因为在新版本的安卓系统(如Nougat和Marshmallow)中出现了允许窃取的漏洞。
那么你能做些什么呢?作为一个用户,重要的是意识到这些覆盖的后果,并注意使用它的应用程序。从API级别23(Android 6.0 Marshmallow)开始,这已经成为一个必须由用户明确授予的权限。然而,这使得50%的安卓用户仍然很脆弱。你仍然可以在 "显示在其他应用程序之上 "的设置中检查哪些应用程序使用了这个权限。
作为开发者,我们有责任确保用户的操作是在用户完全知情和同意的情况下进行的。安卓系统为你的视图提供了一个设置,它的作用就是这样,叫做 filterTouchesWhenObscured. 当它被启用时,只要视图窗口被另一个可见窗口遮挡,框架就会丢弃收到的触控。就这么简单,把 filterTouchesWhenObscured 为 "true",你的应用程序就不会被窃听。
祝您好运,下周见!
有时,应用程序必须能够验证一个行动是在用户完全知情和同意的情况下进行的,如授予许可请求、进行购买或点击广告。不幸的是,一个恶意的应用程序可以通过隐瞒视图的预期目的,试图欺骗用户,使其在不知情的情况下执行这些行动。
https://developer.android.com/reference/android/view/View.html
资源
Secure Code Warrior corporate overview
Secure Code Warrior is an AI Software Governance platform designed to enable organizations to safely adopt AI-driven development by bridging the gap between development velocity and enterprise security. The platform addresses the "Visibility Gap," where security teams often lack insights into shadow AI coding tools and the origins of production code.
安全代码培训主题和内容
Our industry-leading content is always evolving to fit the ever changing software development landscape with your role in mind. Topics covering everything from AI to XQuery Injection, offered for a variety of roles from Architects and Engineers to Product Managers and QA. Get a sneak peek of what our content catalog has to offer by topic and role.
资源
Observe and Secure the ADLC: A Four-Point Framework for CISOs and Development Teams Using AI
While development teams look to make the most of GenAI’s undeniable benefits, we’d like to propose a four-point foundational framework that will allow security leaders to deploy AI coding tools and agents with a higher, more relevant standard of security best practices. It details exactly what enterprises can do to ensure safe, secure code development right now, and as agentic AI becomes an even bigger factor in the future.







