今天在微信小程序里帮朋友测试东西的时候,需要我截图给他,截图中包含了我的个人信息,所以在截图后,我直接编辑图片( iOS 截图后自带的编辑界面,不是微信图片编辑界面)将部分信息去除(下图为示例,注意我把文件传输助手那几个字裁剪了)
编辑完成后,进入聊天会话界面,一般来说点击➕号后会直接在➕号上面快捷显示这个图片以快速发送,如图:
这个时候我没注意,因为当时只是裁剪了图片,那个快捷图片几乎看不出来区别。所以直接点了这个快捷图片就发出去了,然而一看,发出去的却是没经过编辑的原截图,注意看文件传输助手那几个字
这个时候我去检查微信选择图片的界面,发现这张截图并没有出现在选择列表中
我没记错的话,之前的微信,截图后图片是会在这个列表中出现的,猜想是微信实际上是通过某些系统 API 获得了这个图片的原始内容,然后直接拿来就用了。虽然这个 API 只能获取到微信在前台时候截图的内容,但起码我们在使用快捷发送这个功能的时候要尤其注意。
|  |      1elfive OP  2 发错节点了……骂人的话我就不说了。 个人的价值观都那么难以转变,何况是这么大体量的一个公司。尽量不用才是我们应该做的。 | 
|  |      2wd      2021-11-01 07:43:37 +08:00 via iPhone  7 不明白这里怎么就和价值观有关系了,你也说了微信可能只获取到截图的原图了啊?微信自己难道不想准确点么.... | 
|      3botshawn      2021-11-01 07:46:11 +08:00 via iPhone 虽然我是真的不想用微信,但是目前感觉国内的聊天软件只谈聊天功能和界面舒适程度的话,微信确实还不错…… | 
|  |      4morize      2021-11-01 07:46:43 +08:00 这个现象我也观察到了。虽然张小聋没 x ,但微信也真是挺难做的,不开相册权限还想快速截图,那当然只能 app 内自己处理了,应该是用了检测截图的什么 api ,但只能拿到当下的图片。所以发的只能是原图。 | 
|      5whasyt      2021-11-01 07:50:37 +08:00 via iPhone 亲测可复现 | 
|  |      6lucifer9      2021-11-01 07:52:23 +08:00 正常操作,这里编辑完成以后是直接右上角点分享,然后选择微信好友 | 
|  |      7elfive OP @wd #2 所以他就不考虑我为什么要编辑图片的逻辑?我因为用这个功能把一些信息泄漏出去也是他们能接受的吗?我记得以前的截图是会直接出现在图片选择列表里面,而且是编辑之后的图片。现在改成这样还不算? | 
|      8ccvzz      2021-11-01 07:54:42 +08:00 via iPhone 如果你截图的时候正在打视频电话 你还会发现快捷图片上的视频悬浮窗是黑的(存到相册的悬浮窗是有画面的 | 
|  |      10allenchen10 PRO  3 @elfive 一部分用户(包括我)不会给微信读取系统相册的权限,微信为了实现截图之后快捷发送的功能,只能调用某个 API 在应用内截一张图,你对于系统截图的修改没有反映到微信内截图是符合逻辑的,不然相当于微信未经允许读取了系统相册。 | 
|  |      11elfive OP @allenchen10 #10 是的,是你这个说法,程序逻辑没错,主要是间接实现了未经授权获取到了相册图片的读取权限,即使只能在非常有限的范围内的图片。 | 
|  |      12eternityz      2021-11-01 08:17:47 +08:00  2 这个功能不需要相册权限,只需要监听 UIApplication.userDidTakeScreenshotNotification 事件,再对 keyWindow 截图就可以。也因此获取不到用户编辑后的截图,只能发送原图,而且不包含系统状态栏。(这种功能完全没有必要) | 
|  |      13Leonard      2021-11-01 09:17:59 +08:00 在哪个 App 内截图,这个 App 就可以获取到截图的,不需要权限,而且没状态栏 | 
|      15damnu      2021-11-01 09:28:11 +08:00 正常操作应该是截图编辑完点分享选择 wx 或复制,微信粘贴。 | 
|  |      16yangluhui      2021-11-01 09:37:55 +08:00 为了快速发图做的,监听截图事件,自己在微信内生成当前界面截图,由于只生成了微信本身的内容,所以并没有状态栏,状态栏是空的 | 
|  |      17xingyuc      2021-11-01 10:34:01 +08:00 越用 telegram 就越觉得 nb ,IM 的天花板不过分吧 | 
|      18hingle      2021-11-01 10:41:24 +08:00 via iPhone 就是这样的啊,你可以把微信放前台,然后在锁屏页面截图 聊天页面也会有提示框,发送出去是微信的页面截图,而不是锁屏页面。 | 
|      20yangzzzzzz      2021-11-01 10:54:31 +08:00 我记得苹果有个 bug 编辑图片保存后发现没编辑。不知道修复了没 | 
|  |      217gugu      2021-11-01 10:59:54 +08:00 这个是微信自动生成的图片,不是拦截你的截图。对于部分用户来说还是挺方便的。 | 
|  |      22cairnechen      2021-11-01 11:03:30 +08:00 | 
|  |      23eitomomobaohua      2021-11-01 11:12:50 +08:00 前段时间发现个事和楼主的遭遇有点像。众所周知 iPhone 的相机有一个正方形取景框,在上面拍的 1:1 比例的照片在某 App 里能读出来 16:9 的未裁切原图,属实震惊到我了。 | 
|      24MegrezZhu      2021-11-01 11:17:31 +08:00  2 本来就是微信手里的信息(微信 app 自己渲染出来的内容),截图,楼主删掉,然后发现没删掉,于是楼主宣称微信获得了不该获得的东西……? 不抖机灵的话,获得截图跟“实现了未经授权获取到了相册图片的读取权限”,相差其实还是挺远的 | 
|      25Lemeng      2021-11-01 11:30:22 +08:00 个人觉得无所谓吧 | 
|  |      26wofave      2021-11-01 11:46:29 +08:00 via iPhone 我也发现了。和楼主情况类似,只授予微信选中照片权限,后来测试先后在微信内、外截两次图(并使用系统批注功能画几道),「你可能要发送」这里只有第一次微信内的、无批注的截图,所以我猜想是微信在前台运行时,如果发现截图事件就私自也截一张。 | 
|  |      27wofave      2021-11-01 12:20:16 +08:00 via iPhone @wofave #23 至于为什么是「私自也截一张」而不是「私自获取系统截图的原图」,#12 从代码上解释了前者的可能性,而我观察到了两张截图的时间差: 例如 Jetbrains 公众号 10 月 22 日发的抽奖文里有一张内容不断变化的 GIF 。在这个位置截图->查看「你可能要发送的照片」->对比系统相册中的截图。反复若干次(因为 GIF 变换没那么快,所以不能 100%复现)可以发现两张图片上 GIF 里的字是不同的。 | 
|      29lmmortal      2021-11-01 12:24:18 +08:00 via iPhone | 
|  |      30elfive OP @MegrezZhu #24 不是说不想让微信知道它自己提供给我的内容,而是这个功能,在不非常仔细注意的时候容易让我们错误地把自己不想分享的内容分享出去。 | 
|      31PerFectTime      2021-11-01 13:47:29 +08:00 虽然微信做的确实🌶🐔,但我觉得这个没问题 | 
|  |      32ABCDiSDR      2021-11-01 13:58:54 +08:00 @elfive 还有两个方面你没提到: 1 、ios 微信相册权限设置为选择时,通过聊天列表与任意对象(包括人,文件传送功能),点击右下角+号,拍摄任意照片 A 点击发送,此照片 A 默认被给微信使用。 2 、ios 微信相册权限设置为选择时,给了它一张图片 A 的权限,那么在此 A 图片基础上做的任何标注修改裁剪等操作后新的图片 B ,微信也默认有权限。 | 
|  |      33bronco      2021-11-01 14:10:40 +08:00 via iPhone 在手机上试了下。微信没开照片权限。 截图编辑好之后直接点了右上角的分享,发送给微信好友,最后看发出来的图片是编辑后的。 | 
|      34ourstars      2021-11-01 14:20:05 +08:00 复现成功 | 
|      35ourstars      2021-11-01 14:31:54 +08:00 是微信自己应用内的截图才会这样,只能说是这个功能会让那些开启了选择部分图片或者不允许图片权限的用户造成困扰(实际上自己编辑的图片微信是没有权限去读取的)。 | 
|  |      36PostMeridiem18      2021-11-01 14:37:43 +08:00 @yangzzzzzz 这个 bug 在 iOS 11 上面遇到过几次,iOS 12 之后就没再碰到过了 | 
|  |      37ABCDiSDR      2021-11-01 15:17:25 +08:00 微信就是🌶🐔,它明明可以做到,而且现在就已经做到了调用系统 api 来获取用户选择的相片。(点击“我”-“设置”-“帮助与反馈”-“意见反馈”-“其他”-“其他”-“点击+”直接调用系统 api 选择相片) 但它还是要你给它权限,甚至它已经有了相册的权限,只是获取程序非法,现在要你再次授权将非法获取的信息洗白而已。 | 
|      38lanlanye      2021-11-01 16:13:16 +08:00 via iPhone 上面说不开权限发图就一定不方便的,建议去用一用钉钉 | 
|      39ggmood      2021-11-01 16:18:55 +08:00 via iPhone 有些截图通过 wx 分享是发不出去的,估计扫描过内容来做判定 | 
|      40tin3w5      2021-11-01 20:38:38 +08:00 via iPhone 说真的,我不知道为什么,这分明是张小聋在挑战用户底线,怎么到了某些水军嘴里就 TM 成了“加速”利器、产品怎么怎么不错、张小聋有多么不容易…… 用户要的功能是发送指定的图片,不是他的自作多情。不要用一句美其名曰的“为你好”抹杀掉用户原本的意愿。 如果真的想提升用户体验,难道不是好好的把界面设计的“适合正常人操作”吗?现在的设计只能说是符合某个“聋子”操作习惯的设计。如果没那个本事可以从现在的位置上滚下来,没人逼着你负责这个产品。 还有,产品做的像坨屎一样,收发消息的时候丢消息、屁大点事要扫码、非手机端完全不能用户名密码登陆、文件传输限制一堆、无论电脑端还是移动端,从装上就 TM 开始疯狂占用空间、不仅什么权限都想获取还总 TM 尝试自动唤醒。就这德行的 APP 还谈什么狗屁用户体验?讲用户体验就 TM 别把文件有效期设成两天,别把传输的图片压缩的那么严重啊!当婊子还 TM 自己花钱请水军给自己立牌坊,话说出来难道自己的脸不疼吗?哦,忘了,张小聋是聋子,自己说的话自己也听不见。那那些给张小聋唱赞歌的脑残粉和水军呢?你们也一个毛病? | 
|  |      41xingyuc      2021-11-11 09:38:43 +08:00 @cairnechen 你可以不给啊,功能设计而已,杠什么,微信某个版本不给权限不能通过外部分享发送图片和文件,那可真是小而美 | 
|  |      42cairnechen      2021-11-11 09:43:11 +08:00 | 
|  |      43xingyuc      2021-11-11 09:51:55 +08:00 @cairnechen 我说这个是 IM 里的天花板,你非要杠他要相册权限,你不给不就完了,我就不给,又不是不能用,完了来陈述事实,太逗了,你还是用小而美吧 | 
|  |      44cairnechen      2021-11-11 10:04:29 +08:00 | 
|  |      45cairnechen      2021-11-11 10:14:07 +08:00 |