我不想让用户截图或记录我的应用程序的屏幕。我已经为窗口添加了安全标志。这将防止用户截取屏幕截图和录制屏幕。
如果屏幕录制打开,我的应用程序会阻止录制内容,但会录制音频。
在某些根设备上,安全标志可能无法按预期工作。因此,我只想检测是否有任何屏幕录制应用程序/进程正在后台运行,以便我可以隐藏敏感数据并防止其被录制。
有什么方法可以检测屏幕录制是否打开了吗?
发布于 2017-06-14 21:08:12
有什么方法可以检测到屏幕录制是否打开了?
不是的。
所以我只想检测是否有任何屏幕录制应用程序/进程在后台运行,这样我就可以隐藏敏感数据并防止它被录制。
由于屏幕录制不需要特定于录制的应用程序或进程(例如,adb shell screenrecord
),而且您无法知道正在使用媒体投影API的特定应用程序或进程,因此这似乎不切实际。而且,在现代版本的Android上,你无法知道其他进程正在运行。此外,没有什么可以阻止用户将另一个摄像头指向设备屏幕,并以这种方式记录其内容。
我不希望用户截取我的应用程序的屏幕截图或录制屏幕
那就不要写应用程序了。FLAG_SECURE
背后的想法是帮助保护用户免受第三方的攻击,而不是保护开发人员免受用户的攻击。
发布于 2021-10-19 08:45:11
这里的答案实际上只是安全性方面的一般问题。一旦数据流向某人的设备,那么您必须假设他们可以完全、不受限制地访问它。在某种意义上,其他的一切都只是混淆。这充其量只会让它变得更难一点。即使设备的软件提供了一些保护,用户也可以通过物理方式访问该设备,并可以对其进行根操作。如果你想要更好的安全性,那么它需要由设备通过硬件提供。一开始,这是一个大问题,因为电影被流式传输到移动设备上。设备需要一种特殊的硬件加密通道,每秒可以解密到超大的数据量,如果有人试图将未加密的数据转移到屏幕上,就很难写回磁盘。
现在,上面的说明只是为了说明,当数据到达用户设备时,不可能保证您可以控制数据。相反,你应该退后一步,问问你试图实现的目标是什么?您想要防止哪种类型的行为?如果一小部分精通技术的用户能够解决您的保护问题,这是可以的还是很大的问题?数据“泄露”的可接受比率是多少?这真的取决于数据的敏感性,以及你告诉用户你对它有什么保证。这方面是100%最关键的部分。如果您告诉用户他们发送的数据肯定是短暂的,那么这是不可能的。试图建立它,修补所有的漏洞,并玩打地鼠游戏是一场失败的战斗。赢的唯一方法就是不玩。
发布于 2021-10-21 12:31:15
正如@CommonsWare所说,没有办法
知道特定的应用程序或进程正在使用媒体投影应用程序接口,这似乎不切实际。
但是,您可以像这样使用FLAG_SECURE
。
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
正如docs here中所述。
https://stackoverflow.com/questions/44544931
复制相似问题