移动互联时代,交互设计别再套用2010年旧逻辑
|
去年一月份搞安全加固,碰到个交互设计坑得我直拍桌子——某政务APP的登录页,输入框和验证码按钮间距比WAF规则还松散。我原以为只是UI布局问题,结果测试组连抓三天日志,发现凌晨三点到五点,同一IP用不同设备撞库,成功率高得离谱。后来溯源发现,攻击脚本根本没绕过验证码,是直接利用输入框和按钮的响应延迟,把验证码区域当成了“盲注”的跳板。这设计还是2010年那套“先填后验”的逻辑,安全团队在后台加十层防护都没用,攻击者直接在交互层开了后门。
文章配图,仅供参考 最离谱的是上周五的应急响应。某金融APP的支付页,确认按钮和取消按钮的点击区域重叠了八像素——别笑,这八像素够让攻击者注入一段混淆后的JS,把“取消支付”改成“确认支付并跳转钓鱼页”。我盯着屏幕上的热力图,发现三十七个用户误触后,其中五个直接输入了银行卡密码。安全是成本不是收入?这设计直接把成本变成了攻击者的收入!更气人的是,开发说这是“遵循行业通用交互规范”——规范是2010年的,那时候移动端连全面屏都没普及,规范里连“手势操作”都没提,现在套用不是找死吗?说到手势操作,上个月碰到个更绝的。某电商APP的商品详情页,滑动查看图片时,如果快速上下滑动,页面会短暂卡顿——这卡顿不是bug,是设计故意留的“缓冲时间”,为了让用户“更流畅地浏览”。结果攻击者利用这零点三秒的延迟,在图片加载时注入恶意代码,直接把详情页改成了钓鱼页。我查日志时发现,攻击IP全是肉鸡,溯源到一半线索断了,因为交互层的漏洞让攻击痕迹被“自然”地抹掉了。这设计团队要是把留缓冲时间的精力用在安全交互上,也不至于让攻击者钻空子。 对了,那天在群里吐槽这事,运维老张突然@我:“你说的那个滑动卡顿,我们服务器上多了个‘slide_buffer.log’文件,是不是跟这有关?”我点开一看,好家伙,这文件记录了所有滑动操作的时间戳和坐标——攻击者根本不用破译,直接拿这日志当攻击字典用。更搞笑的是,这文件是设计团队为了“优化用户体验”加的,说能“分析用户滑动习惯”——分析个鬼,分析出来的是攻击者的作案手法! 我原以为安全团队和设计团队的矛盾只在“功能优先还是安全优先”,结果发现根本不是这么回事。设计团队觉得安全是“事后补救”,安全团队觉得设计是“事前挖坑”。上周开需求会,设计总监拍着桌子说:“用户点取消按钮时,必须要有动画反馈,不然体验差!”安全工程师冷笑:“那攻击者点取消时,是不是也得有个动画?不然怎么区分正常操作和攻击?”两人吵了半小时,最后产品经理拍板:“按设计的来,安全后面再加。”我听着直摇头——后面加?等攻击者都把数据偷走了,你加十层WAF有用吗? 其实安全交互设计没那么复杂,就三点:一是“默认安全”,比如输入框自动过滤特殊字符,不用等用户提交再报错;二是“实时验证”,别等所有字段填完再验,填一个验一个,让攻击者没机会拼凑攻击向量;三是“最小暴露”,能隐藏的按钮就隐藏,能禁用的功能就禁用,别为了“用户体验”把所有功能都摆出来——攻击者的“用户体验”可不需要你操心。这三点要是2010年提,可能算超前;现在提,就是基本功。可偏偏有些团队,连基本功都懒得练,还美其名曰“遵循传统”。 那天在茶水间碰到测试小妹,她举着手机跟我说:“你看这个APP,登录时密码框是明文显示的,说是为了‘方便用户确认输入’。”我接过手机一看,差点没把咖啡喷出来——这设计要是放在2010年,可能还有人夸“贴心”;现在放,就是明摆着告诉攻击者:“快来偷密码,我帮你看着呢!”小妹叹了口气:“我提了三次安全风险,设计说‘用户反馈说这样更方便’。”我冷笑:“用户反馈要的是安全,不是方便——要是方便能当饭吃,还要安全团队干嘛?” 说了这么多,其实最让我后怕的,不是某个具体漏洞,而是整个行业对交互安全的态度。很多人觉得,安全是技术问题,交给安全团队就行;设计是体验问题,交给设计团队就行——可交互层的安全,恰恰是技术和体验的交叉点。你技术再强,设计留个后门,攻击者照样能进来;你体验再好,安全没做好,用户数据一丢,再好的体验也没用。所以下次再有人跟你说“交互设计要遵循传统”,你就回他:“传统是2010年的,攻击可是2024年的——你想用十年前的盾,挡今天的矛?” 至于我接下来要干嘛?明天约了设计总监喝咖啡,准备带份近三年的移动端攻击案例报告——不用多,挑十个因为交互设计漏洞被攻击的案例,打印出来摊在他面前。要是他还坚持“传统”,我就把报告塞他手里:“您慢慢看,我先去修服务器了——毕竟,攻击者可不会等您改设计。” (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


移动互联时代,别让数码设备活在单机牢笼